Замените слово в BLOB-тексте MySQL

у меня есть огромная таблица mysql (называется tcountriesnew) и столбцов (называемых slogen, blob type). В каждом из этих slogen blobs я хотел бы заменить слово, например:banana to apple.

к сожалению, я попытался напечатать все строки со словом banana, и это не сработало.

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

пожалуйста, помогите мне.

  • что я пропустил, в чем проблема с моим запросом?
  • как я могу заменить текст в blob?

3 ответов


зависит от того, что вы подразумеваете под" заменой " показать в select:

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 для двоичных данных.


в некоторых случаях это необходимо для сохранения текста BLOB. В моем случае, по какой - либо причине разработчики Drupal 7 решили использовать blob для всех текстовых столбцов-это вне контроля разработчика.

чтобы преобразовать blob в текст, Используйте функцию MySQL convert. Затем вы должны сохранить его в базе данных и преобразовать его снова в blob - но это обрабатывается автоматически MySQL. Таким образом, следующий запрос сделает трюк:

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

на MySQL 5.5 это решило мою проблему полностью.

и настройте PhpMyAdmin для отображения данных Blob


какую версию вы используете ? Может быть, это ошибка : http://bugs.mysql.com/bug.php?id=27. В противном случае попробуйте cast ваш столбец blob.