11.06.2015, 13:08
|
|
Профессор
|
|
Регистрация: 01.09.2011
Сообщений: 263
|
|
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%' |
|
|
11.06.2015, 13:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Duda.Ml1986@gmail.com
|
В БД это выглядит так: "src="http://site.ru/images"
|
Если так, то почему ищется '%src="http://site.ru'? REPLACE это просто поиск строки к REGEXP отношения не имеющий. RLIKE (REGEXP) нужно использовать.
|
|
11.06.2015, 14:02
|
|
Профессор
|
|
Регистрация: 01.09.2011
Сообщений: 263
|
|
Можете привести пример пожалйста
|
|
11.06.2015, 15:19
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
В MySQL нет функции preg_replace, только строковой заменой:
UPDATE table SET field = REPLACE(field, SUBSTRING_INDEX(field, 'replace_tetx', 1), SUBSTRING_INDEX(field, 'search_tetx', 1))
Если домен и постоянство, значит хватит, нет, значит нужно добавлять REGEXP.
|
|
11.06.2015, 16:03
|
|
Профессор
|
|
Регистрация: 01.09.2011
Сообщений: 263
|
|
Не работает. Обрезает строку неправильно
|
|
11.06.2015, 16:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Известны такие вещи как процедуры и функции? Иначе дам ссылку на известную уже функцию для этой операции, но пояснять что к чему некогда, по крайней мере сегодня.
|
|
11.06.2015, 16:47
|
|
Профессор
|
|
Регистрация: 01.09.2011
Сообщений: 263
|
|
Я понял, в любом случае спасибо, самому пора сильнее извилины напрягать))
|
|
11.06.2015, 21:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Самому всегда придется. Я к тому, что если в курсе, то взяли и используем, а не насилуем SQL от непонимания.
Можно пример приведенный дополнить условием WHERE REGEXP(pattern), который будет искать необходимое для замены, да и ускорит процесс отсеивая лишнее. Выражения MySQL REGEXP доступны в сети, их не так много, чтобы запутаться в них.
Последний раз редактировалось laimas, 12.06.2015 в 01:21.
|
|
11.06.2015, 22:48
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Duda.Ml1986@gmail.com,
выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно, пару минут работы
|
|
12.06.2015, 01:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Poznakomlus
|
выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно
|
А если это не содержанием определяется, а формируемые и вставляемые в содержание ссылки, то вообще не стоит такое держать в базе. )
|
|
|
|