由MySQL替换BLOB文本中的单词

问题描述 投票:8回答:3

我有一个巨大的mysql表(称为tcountriesnew)和一列(称为slogen, blob type)。在每个slogen Blob中,我想替换一个单词,例如:bananaapple

不幸的是,我尝试用香蕉一词打印所有行,但是行不通。

select * from tcountriesnew where slogen like '%banana%';

请帮助我。

  • 我错过了,查询出了什么问题?
  • 如何替换Blob中的文本?
mysql select replace blob
3个回答
10
投票

取决于您所说的“替换”;使用替换在选择中显示修改后的文本:

select replace(slogen, 'bananas', 'apples') from tcountriesnew where slogen like '%bananas%';

或更新表中的数据:

update tcountriesnew set slogen=replace(slogen, 'bananas', 'apples') where slogen like '%bananas%';

顺便说一句。为什么使用blob作为文字?您应该将text类型用于文本数据,并将blob类型用于二进制数据。


2
投票

在某些情况下,需要保存文本BLOB。就我而言,无论出于何种原因,Drupal 7开发人员都选择对所有TEXT列使用blob-这是开发人员无法控制的。

要将Blob转换为文本,请使用MySql convert函数。然后,您必须将其保存到数据库中,然后再次将其转换为blob-但这由MySQL自动处理。因此,以下查询可以解决问题:

UPDATE tcountriesnew 
SET slogen = replace(CONVERT(slogen USING utf8), 'bananas', 'apples')
WHERE slogen LIKE '%bananas%';

在MySQL 5.5上,这完全解决了我的问题。

也,configure your PhpMyAdmin to show Blob data


0
投票

您正在使用哪个版本?可能是这个bug:http://bugs.mysql.com/bug.php?id=27。否则,请尝试cast您的Blob列。

© www.soinside.com 2019 - 2024. All rights reserved.