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

195

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

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

Теги:
search
replace

6 ответов

395
Лучший ответ

Измените table_name и field для соответствия имени вашей таблицы и поля:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
  • REPLACE (строковые функции)
  • INSTR (строковые функции)
  • 72
    ОБНОВЛЕНИЕ [table_name] SET [field_name] = REPLACE ( [field_name] , "foo", "bar");
  • 5
    Я думаю, что быстрее не использовать WHERE instr(field, 'foo') > 0; (поэтому он не будет выполнять 2 поиска) ... Я не прав?
Показать ещё 9 комментариев
70
UPDATE table_name 
SET field = replace(field, '[string-to-find]', '[string-that-will-replace-it]');
  • 2
    Помог мне. Для всех noobs, пожалуйста, удалите квадратные скобки.
5

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

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

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

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

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

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

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

  • 0
    Работает для меня. Это зависит от того, как вы интерпретируете вопрос. Если вам нужно изменить записи базы данных, используйте update . В противном случае это решение намного лучше, так как его можно использовать без обновления полей.
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню