SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.10.2008 03:58:03

esmark
Участник
Зарегистрирован: 05.10.2008
Сообщений: 2

Замена слов в тексте. Как?

Здравствуйте!
Подскажите, пожалуйста, как можно средствами MySQL заменить одно и то же повторяющееся слово в текстовом столбце БД. Остальной же текст должен быть неизменным.
Примерно так попытался сделать замену в тексте постоянно присутствующего слова word1 на word2:

Код:

UPDATE `table` SET `text` = '%word2%' WHERE `text` LIKE '%word1%';

Но не получается. Раньше получалось обновление с арифметическими данными, но с текстом - никак. Как сделать правильно?

Отредактированно esmark (05.10.2008 04:01:26)

Неактивен

 

#2 05.10.2008 11:42:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Замена слов в тексте. Как?

[syntax=mysql]UPDATE `table` SET `text` = REPLACE(`text`, `word1`, `word2`) WHERE `text` LIKE `%word1%`;[syntax]

Неактивен

 

#3 05.10.2008 23:28:39

esmark
Участник
Зарегистрирован: 05.10.2008
Сообщений: 2

Re: Замена слов в тексте. Как?

Благодарю за ответ. С этой задачей справился.
А как удалить\заменить определённую ссылку или тег с включённым в него словом, если известен только начальный и конечный элемент типа:
UPDATE `table` SET `text` = REPLACE(`text`, '<a href="http://depositfiles.com/%</a>', '') WHERE `text` LIKE '%depositfiles.com%';
Я так понял, что SET не работает с %, как с произвольным подстановочным элементом и % внутри CONCAT() тоже.
И вообще, где можно об этом прочитать? В стандартном справочнике для MySQL 5.0 об этом почему-то не пишут. sad

Отредактированно esmark (05.10.2008 23:29:38)

Неактивен

 

#4 05.10.2008 23:36:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Замена слов в тексте. Как?

Регулярные выражения в MySQL пока позволяют только искать: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

Замена регулярным выражением будет реализована в будущих версиях. Можно обойти довольно криво с использованием LOCATE и SUBSTR. Находите положение нужного элемента, выделяете подстроку, в ней позицию завершающего элемента, опять подстроку. http://dev.mysql.com/doc/refman/5.1/en/ … ion_locate

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson