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