БлогNot. Замена подстроки в базе данных MySQL

Замена подстроки в базе данных MySQL

Задача встаёт, например, при переезде сайта, на который у вас много ссылок с другого сайта, построенного на базе данных MySQL - так что нужно заменить адреса во всей базе. Ну или просто Вы обнаружили, что 10 лет писали какое-то слово неправильно :)

Решить проблему можно с помощью одного запроса, выполненного в phpMyAdmin, доступ к которому, как правило, дают хостеры. Конечно, перед этим имеет смысл сделать полный дамп базы себе на жёсткий диск.

Собственно, вот этот запрос:

UPDATE таблица SET поле = REPLACE(поле, 'что_заменить', 'чем_заменить');

где
таблица — имя таблицы;
поле — имя поля, в котором производим замену подстроки.

Например, здесь мы делаем замену домена во всех отдельно хранящихся в поле url таблицы blocks адресах страниц внешних ссылок:

update blocks set url = replace (url, 'pers.narod.ru', 'nickolay.info');

Если таблиц с заменяемой строкой несколько - просто выполните аналогичный запрос несколько раз.

Следует учитывать кодировку и предварительно проверить, нет ли в строке поиска и строке замены специальных символов, которые могут храниться в базе иначе, чем выглядят на экране, например, " как " и т.д.


теги: mysql

11.09.2013, 19:39; рейтинг: 9115