2014-02-09 4 views
0

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

Например, если я хочу найти таблицу для всех упоминаний о словах «желтый», «синий» и «зеленый» и заменить их «черным», как бы я сделал это в одно и то же время, не выполняя запрос для каждого отдельного слова?

У меня есть стол wp_posts и хотите, чтобы это все истекло. post_content.

Как именно выглядит команда?

Спасибо!

+0

Если это одноразовая вещь, вы, скорее всего, сделали это быстрее, просто сбросив содержимое таблицы, выполните поиск и замену в файле .sql в текстовом редакторе, d затем снова загрузите его в базу данных. (Это, конечно, будет работать только в том случае, если вы не замените слова, критические для синтаксиса SQL.) – CBroe

ответ

0

Для single table обновления

UPDATE `table_name` 
SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text') 

От multiple tables -

Если вы хотите редактировать из всех таблиц, лучше всего взять dump и затем find/replace и загрузить его обратно.

и/или использовать массивы, чтобы выбрать, что указанные цвета, должны быть unwanted text и черный цвет должен быть wanted text

+0

Привет, мне не нужны несколько таблиц - мне нужно несколько значений. Итак, один стол, одно поле, с тоннами значений, которые мне нужно найти и заменить, как в приведенном примере. Сбрасывание и поиск/замена занимают слишком много времени, так как слишком много значений для поиска по одному и заменяются один за другим. – user1446650

0

Вы можете сделать что-то вроде этого

UPDATE wp_posts 
    SET post_content = REPLACE(
         REPLACE(
          REPLACE(post_content, 
          'yellow', 'black'), 
         'blue', 'black'), 
         'green', 'black') 
WHERE post_content LIKE '%yellow%' 
    OR post_content LIKE '%blue%' 
    OR post_content LIKE '%green%' 

Здесь находится SQLFiddle demo

Смежные вопросы