Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   SQL замена подстроки (https://javascript.ru/forum/server/56347-sql-zamena-podstroki.html)

Duda.Ml1986@gmail.com 11.06.2015 13:08

SQL замена подстроки
 
Всем привет, есть вот такой запрос

Код:

UPDATE `posts`
SET `full` = REPLACE(`full`,'%src=\"http://site.ru','%src=\"https://site.ru%')

то есть был переход на https и нужно все картинки в контенте заменить, но почему не находит ни под каким предлогом.

Код:

UPDATE `posts`
SET `full` = REPLACE(`full`,'%src="http://site.ru','%src="https://site.ru%')

Код:

UPDATE `posts`
SET `full` = REPLACE(`full`,'%src='http://site.ru','%src='https://site.ru%')

В БД это выглядит так: "src="http://site.ru/images"

Кстати вот этот запрос выводит больше ста записей:

Код:

SELECT * FROM `posts` WHERE full like '%src=\"http://site%'

laimas 11.06.2015 13:35

Цитата:

Сообщение от Duda.Ml1986@gmail.com
В БД это выглядит так: "src="http://site.ru/images"

Если так, то почему ищется '%src="http://site.ru'? REPLACE это просто поиск строки к REGEXP отношения не имеющий. RLIKE (REGEXP) нужно использовать.

Duda.Ml1986@gmail.com 11.06.2015 14:02

Можете привести пример пожалйста

laimas 11.06.2015 15:19

В MySQL нет функции preg_replace, только строковой заменой:
UPDATE table SET field = REPLACE(field, SUBSTRING_INDEX(field, 'replace_tetx', 1), SUBSTRING_INDEX(field, 'search_tetx', 1))


Если домен и постоянство, значит хватит, нет, значит нужно добавлять REGEXP.

Duda.Ml1986@gmail.com 11.06.2015 16:03

Не работает. Обрезает строку неправильно

laimas 11.06.2015 16:14

Известны такие вещи как процедуры и функции? Иначе дам ссылку на известную уже функцию для этой операции, но пояснять что к чему некогда, по крайней мере сегодня.

Duda.Ml1986@gmail.com 11.06.2015 16:47

Я понял, в любом случае спасибо, самому пора сильнее извилины напрягать))

laimas 11.06.2015 21:49

Самому всегда придется. Я к тому, что если в курсе, то взяли и используем, а не насилуем SQL от непонимания.

Можно пример приведенный дополнить условием WHERE REGEXP(pattern), который будет искать необходимое для замены, да и ускорит процесс отсеивая лишнее. Выражения MySQL REGEXP доступны в сети, их не так много, чтобы запутаться в них.

Vlasenko Fedor 11.06.2015 22:48

Duda.Ml1986@gmail.com,
выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно, пару минут работы

laimas 12.06.2015 01:25

Цитата:

Сообщение от Poznakomlus
выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно

А если это не содержанием определяется, а формируемые и вставляемые в содержание ссылки, то вообще не стоит такое держать в базе. )


Часовой пояс GMT +3, время: 08:28.