用MySQL替换BLOB文本中的单词

时间:2010-10-19 07:37:16

标签: mysql select replace blob

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

不幸的是,我尝试使用单词banana打印所有行,但它不起作用。

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

请帮帮我。

  • 我错过了什么,我的查询有什么问题?
  • 如何替换blob中的文字?

3 个答案:

答案 0 :(得分:8)

取决于你选择的“替换”节目的意思:

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作为二进制数据。

答案 1 :(得分:2)

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

要将blob转换为文本,请使用MySql转换函数。然后你必须将它保存到数据库并再次转换为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

答案 2 :(得分:0)

您使用的是哪个版本?也许是这个错误:http://bugs.mysql.com/bug.php?id=27。 否则,请尝试cast您的blob列。