Відповіді:
Зміна table_name
і field
в відповідність з вашим ім'ям таблиці і поля в питанні:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(щоб не здійснити 2 пошуки) ... Я помиляюся?
WHERE
пункту ви робите UPDATE
всі рядки ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
Як, наприклад, якщо я хочу замінити всі випадки Івана від Марка, я буду використовувати нижче,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
І якщо ви хочете здійснити пошук та заміну на основі значення іншого поля, ви можете зробити CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Просто мати цей тут, щоб інші знайшли його одразу.
На мій досвід, найшвидший метод
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
INSTR()
Шлях є другим найбільш швидко і опускаючи WHERE
положення в цілому є самим повільним, навіть якщо стовпець не індексуються.
Я використав описаний вище командний рядок наступним чином: оновіть набір TABLE-NAME FIELD = замінити (FIELD, 'І', 'і'); мета полягала в заміні І на і ("А" має бути малі). Проблема полягає в тому, що я не можу знайти "І" в базі даних, але якщо я використовую на зразок "% And%", то він може знайти її разом із багатьма іншими, які є частиною слова, або навіть тими, що вже мають малі літери.
[field_name]
, "foo", "bar");