MySQL поиск и замена некоторого текста в поле - PullRequest
236 голосов
/ 24 сентября 2008

Какой запрос MySQL сделает текстовый поиск и заменит одно конкретное поле в таблице?

т.е. найдите foo и замените на bar, чтобы запись с полем со значением hello foo стала hello bar.

Ответы [ 7 ]

454 голосов
/ 24 сентября 2008

Измените table_name и field, чтобы соответствовать названию вашей таблицы и соответствующему полю:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
81 голосов
/ 24 сентября 2008
UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
6 голосов
/ 08 июля 2014
 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

Как, например, если я хочу заменить все вхождения Джона Марком, я буду использовать ниже,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
6 голосов
/ 05 мая 2012

И если вы хотите искать и заменять на основе значения другого поля, вы можете сделать CONCAT:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

Просто чтобы иметь это здесь, чтобы другие сразу его нашли.

1 голос
/ 05 апреля 2018

По моему опыту, самый быстрый метод -

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

Путь INSTR() является вторым по быстродействию, а пропуск фразы WHERE вообще самый медленный, даже если столбец не проиндексирован.

1 голос
/ 24 сентября 2008

Строковая функция Replace сделает это.

0 голосов
/ 23 августа 2014

Я использовал приведенную выше командную строку следующим образом: обновить TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); цель состояла в том, чтобы заменить А на и («А» должно быть в нижнем регистре). Проблема в том, что он не может найти «И» в базе данных, но если я использую как «% And%», то он может найти его вместе со многими другими символами, которые являются частью слова, или даже те, которые уже строчные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...