ОБНОВЛЕНИЕ [table_name] SET [field_name] = REPLACE ( [field_name], "foo", "bar");
Meetai.com
6
Я думаю, что быстрее не использовать WHERE instr(field, 'foo') > 0;(так что он не будет выполнять 2 поиска) ... Я ошибаюсь?
Инеманья
2
@treddell, никакие позиции не начинаются с 1 в строках SQL.
Алексис Уилке
2
@inemanja, @Air без WHEREпредложения вы делаете UPDATEна всех рядах ...
Алексис Уилке
7
Как и Pring, если вы собираетесь оставить такой комментарий, вы можете объяснить, почему. Была ли это ошибка в первоначальном совете или ошибка с вашей стороны? И вы знаете, что перед тем, как вносить какие-либо радикальные изменения в базу данных, вы должны сначала сделать ее резервную копию?
pdwalker
86
UPDATE table_name
SET field = replace(field,'string-to-find','string-that-will-replace-it');
UPDATE table_name SET field = REPLACE(field,'foo','bar')WHERE field LIKE'%foo%';
Этот INSTR()способ является вторым по быстродействию, и полное исключение этого WHEREпредложения является самым медленным, даже если столбец не проиндексирован.
Работает для меня, потому что мне нужно добавить еще один пункт, где. ОБНОВЛЕНИЕ table_name SET field = REPLACE (field, 'foo', 'bar') WHERE field LIKE '% foo%' AND otherfield = 'foo22'
Работает для меня. Это зависит от того, как вы интерпретируете вопрос. Если вам нужно изменить записи в базе данных, используйте update. В противном случае это решение намного лучше, так как его можно использовать без обновления полей.
Грубер
0
Я использовал приведенную выше командную строку следующим образом: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); цель состояла в том, чтобы заменить А на и («А» должно быть в нижнем регистре). Проблема в том, что он не может найти «И» в базе данных, но если я использую как «% And%», то он может найти его вместе со многими другими символами, которые являются частью слова, или даже те, которые уже в нижнем регистре.
[field_name]
, "foo", "bar");WHERE instr(field, 'foo') > 0;
(так что он не будет выполнять 2 поиска) ... Я ошибаюсь?WHERE
предложения вы делаетеUPDATE
на всех рядах ...источник
Как, например, если я хочу заменить все вхождения Джона Марком, я буду использовать ниже,
источник
И если вы хотите искать и заменять на основе значения другого поля, вы можете сделать CONCAT:
Просто чтобы это было здесь, чтобы другие сразу его нашли.
источник
По моему опыту, самый быстрый метод
Этот
INSTR()
способ является вторым по быстродействию, и полное исключение этогоWHERE
предложения является самым медленным, даже если столбец не проиндексирован.источник
Функция замены строки сделает это.
источник
update
. В противном случае это решение намного лучше, так как его можно использовать без обновления полей.Я использовал приведенную выше командную строку следующим образом: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); цель состояла в том, чтобы заменить А на и («А» должно быть в нижнем регистре). Проблема в том, что он не может найти «И» в базе данных, но если я использую как «% And%», то он может найти его вместе со многими другими символами, которые являются частью слова, или даже те, которые уже в нижнем регистре.
источник