MySQL выполняет поиск и замену некоторого текста в поле

StackOverflow https://stackoverflow.com/questions/125230

  •  02-07-2019
  •  | 
  •  

Вопрос

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

То есть.поиск foo и заменить на bar итак, запись с полем со значением hello foo становится hello bar.

Это было полезно?

Решение

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

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;

Другие советы

UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');

И если вы хотите выполнить поиск и замену на основе значения другого поля, вы могли бы выполнить ОБЪЕДИНЕНИЕ:

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

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

 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

Например, если я хочу заменить все вхождения John на Mark, я буду использовать приведенное ниже,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');

Тот Самый Заменить строковая функция сделает это.

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

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

Тот Самый INSTR() способ является вторым по быстродействию и исключает WHERE предложение в целом является самым медленным, даже если столбец не проиндексирован.

Я использовал приведенную выше командную строку следующим образом:обновить ТАБЛИЦУ-ЗАДАТЬ ИМЯ ПОЛЯ = заменить(ПОЛЕ, 'И', 'и');цель состояла в том, чтобы заменить And на and ("A" должно быть в нижнем регистре).Проблема в том, что он не может найти "И" в базе данных, но если я использую что-то вроде "% И%", то он может найти его вместе со многими другими "и", которые являются частью слова или даже теми, которые уже написаны в нижнем регистре.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top