Ответы:
Измените 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
предложения является самым медленным, даже если столбец не проиндексирован.
Я использовал приведенную выше командную строку следующим образом: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); цель состояла в том, чтобы заменить А на и («А» должно быть в нижнем регистре). Проблема в том, что он не может найти «И» в базе данных, но если я использую как «% And%», то он может найти его вместе со многими другими символами, которые являются частью слова, или даже те, которые уже в нижнем регистре.
[field_name]
, "foo", "bar");