sql замена куска текста
Подскажите запрос. Имеем в базе строки вида:
... src="https://i025.domen.rr/0711/ba/7d4125179384.jpg" height= ...
... src="https://y88e.domen.rr/09/fgf7f77fdd" height= ...
... src="https://6tee.domen.rr/09eerre/u77474u4u4.png" height= ...
и т.д. domen.rr всегда неизменен. Нужно заменить все что в "" на "https://svoi.cc" на выходе что бы получилось:
... src="https://svoi.cc" height= ...
... src="https://svoi.cc" height= ...
... src="https://svoi.cc" height= ...
и т.д.
Ответы (1 шт):
Автор решения: Герман Борисов
→ Ссылка
Решение сильно зависит от диалекта самой СУБД, которую вы не указали.
Вариант 1.
Скорее всего одним UPDATE не получится, придётся писать хранимую процедуру.
- Найти в строке положение
src=" - Найти в строке положение
", которое после найденной ранее позиции + 5 (длина первой подстроки). Функции поиска подстроки как правило принимают третий необязательный параметр, который указывает стартовую позицию поиска. - Вырезать строку между ними. Если она
like 'https://%domen.rr%, то собрать новую строку из того что в оригинальной до первой позиции,'src="https://svoi.cc'и того что после второй.
Вариант 2.
Работает только если СУБД поддерживает замену регулярными выражениями.
Найти в строке src="https://([^"/]*\.)?domen.rr/[^"]*" и заменить на src="https://svoi.cc"
Пояснения к регулярке:
[^"/]*\.— что угодно кроме кавычки и слэша любое количество раз, и точка в конце. Находит поддомен[^"]*— что угодно кроме кавычки любое количество раз. Находит текст ссылки до конца.