Замена подстроки в базе данных MySQL
Задача встаёт, например, при переезде сайта, на который у вас много ссылок с другого сайта, построенного на базе данных MySQL - так что нужно заменить адреса во всей базе. Ну или просто Вы обнаружили, что 10 лет писали какое-то слово неправильно :)
Решить проблему можно с помощью одного запроса, выполненного в phpMyAdmin, доступ к которому, как правило, дают хостеры. Конечно, перед этим имеет смысл сделать полный дамп базы себе на жёсткий диск.
Собственно, вот этот запрос:
UPDATE таблица SET поле = REPLACE(поле, 'что_заменить', 'чем_заменить');
где
таблица — имя таблицы;
поле — имя поля, в котором производим замену подстроки.
Например, здесь мы делаем замену домена во всех отдельно хранящихся в поле url
таблицы blocks
адресах страниц внешних ссылок:
update blocks set url = replace (url, 'pers.narod.ru', 'nickolay.info');
Если таблиц с заменяемой строкой несколько - просто выполните аналогичный запрос несколько раз.
Следует учитывать кодировку и предварительно проверить, нет ли в строке поиска и строке замены специальных символов, которые могут храниться в базе иначе, чем выглядят на экране, например, "
как "
и т.д.
11.09.2013, 19:39 [10214 просмотров]