В столбце таблицы сохранены ссылки на веб-страницы в таком формате:
https://website.com/?variable1=aaa&variable2=222&variable3=ccc&variable4=dd44
Могут быть разные имена страниц, различное количество параметров и т. Д..
Моя цель - получить значение «variable2», которое равно «222».Мы можем предположить, что «variable2» всегда присутствует в ссылке.
До сих пор я сталкивался с такого рода решением, которое работает правильно, но выглядит недостаточно эффективно:
select
substring(t.link, position('variable2=' in t.link)+10,
position('&' in substring(t.link, position('variable2=' in t.link)+10))-1)
from
(select
'https://website.com/?variable1=aaa&variable2=222&variable3=ccc&variable4=dd44' as link
)t;
Я считаю, что это можно сделать с помощью одной функции подстроки:
substring(string from pattern for escape)
До сих пор мне удавалось получить подстроку до последнего появления «&» с помощью этих двух разных подходов:
substring(t.link from '%variable2=#"%#"&%' for '#'),
substring(t.link from 'variable2=(.+)&')
оба они дают одинаковый результат: "222 & variable3 = ccc"
Заранее спасибо!