Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Подскажите, пожалуйста, как можно средствами MySQL заменить одно и то же повторяющееся слово в текстовом столбце БД. Остальной же текст должен быть неизменным.
Примерно так попытался сделать замену в тексте постоянно присутствующего слова word1 на word2:
UPDATE `table` SET `text` = '%word2%' WHERE `text` LIKE '%word1%';
Но не получается. Раньше получалось обновление с арифметическими данными, но с текстом - никак. Как сделать правильно?
Отредактированно esmark (05.10.2008 04:01:26)
Неактивен
[syntax=mysql]UPDATE `table` SET `text` = REPLACE(`text`, `word1`, `word2`) WHERE `text` LIKE `%word1%`;[syntax]
Неактивен
Благодарю за ответ. С этой задачей справился.
А как удалить\заменить определённую ссылку или тег с включённым в него словом, если известен только начальный и конечный элемент типа:
UPDATE `table` SET `text` = REPLACE(`text`, '<a href="http://depositfiles.com/%</a>', '') WHERE `text` LIKE '%depositfiles.com%';
Я так понял, что SET не работает с %, как с произвольным подстановочным элементом и % внутри CONCAT() тоже.
И вообще, где можно об этом прочитать? В стандартном справочнике для MySQL 5.0 об этом почему-то не пишут.
Отредактированно esmark (05.10.2008 23:29:38)
Неактивен
Регулярные выражения в 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
Неактивен