MySQL: поиск и замена на цель, у которой есть перевод строки / возврат каретки? - PullRequest
3 голосов
/ 22 февраля 2012

Мне нужно очистить нашу базу данных и нужно массово заменить что-то вроде этого:

<div class="rtecenter"><br />
<font color="#990033"><strong>I'm so hot, I sometimes spontaneously combust.</strong></font><br />
<img src="http://i476.photobucket.com/albums/rr124/phoenix_oasis/coollogo_com_63811610.gif" alt="" /></div>

(я просто собираюсь удалить все его экземпляры).Я уже знаю, как сделать массовую замену (я использую PHPMyAdmin), однако проблема в том, что в нем есть CR / LF, поэтому я не уверен, как добавить правильную строку для поиска в запросе ... простодля тестирования я попытался выполнить поиск, используя Char (10) или Char (13), где новые строки, но результаты не возвращаются, (хотя я знаю, что они есть).

Кто-нибудь знает?

1 Ответ

4 голосов
/ 22 февраля 2012

Если есть только CR / LF, то вы можете использовать этот запрос -

UPDATE table
SET
  column = REPLACE(column, '<div class="rtecenter"><br />\r\n<font color="#990033"><strong>I''m so hot, I sometimes spontaneously combust.</strong></font><br />\r\n<img src="http://i476.photobucket.com/albums/rr124/phoenix_oasis/coollogo_com_63811610.gif" alt="" /></div>', '');

Если есть разные разделители строк, вы можете сделать это в два этапа:

UPDATE table
SET
  column = REPLACE(column, '\r', ''); -- replace all \r\n to \n

UPDATE table
SET
  column = REPLACE(column, '<div class="rtecenter"><br />\n<font color="#990033"><strong>I''m so hot, I sometimes spontaneously combust.</strong></font><br />\n<img src="http://i476.photobucket.com/albums/rr124/phoenix_oasis/coollogo_com_63811610.gif" alt="" /></div>', '');
...