Как вырезать строку в Oracle sql и вернуть подстроку - PullRequest
0 голосов
/ 11 мая 2018

У меня есть требование в моем проекте, где мне нужно разделить url и извлечь из него переменную, url - это столбец в одной из таблиц.URL выглядит следующим образом:

Строка ввода

"http://example.com/wps/myportal/example/viewer?mstrContentType=Report&   mstrId=15F4AC9C4453E5F75456438F732F7B8C&contentName=7.++CTI+Session+Order+Counts&proj=System+Xr+-+DMDR/CW&workspaceName=&woId=&vendorId=Microstrategy"

Мне нужно o / p, чтобы сравнить с целевым столбцом следующим образом:

ContentType=Report
mstrId=15F4AC9C4453E5F75456438F732F7B8C
contentName=7.++CTI+Session+Order+Counts
etc...

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Здесь все, что вам нужно использовать, REGEXP_SUBSTR, как показано ниже.

create table test1(col1 varchar2(4000));
insert into test1 values(
'http://example.com/wps/myportal/example/viewer?mstrContentType=Report&   mstrId=15F4AC9C4453E5F75456438F732F7B8C&contentName=7.++CTI+Session+Order+Counts&proj=System+Xr+-+DMDR/CW&workspaceName=&woId=&vendorId=Microstrategy'
);

select regexp_substr(col1,'[^?"]+',1,2) ss from test1;

select trim(regexp_substr(regexp_substr(col1,'[^?"]+',1,2),'[^&]+', 1, level)) as output_data from test1
connect by regexp_substr(regexp_substr(col1,'[^?"]+',1,2), '[^&]+', 1, level) is not null;

OUTPUT_DATA

mstrContentType=Report
mstrId=15F4AC9C4453E5F75456438F732F7B8C
contentName=7.++CTI+Session+Order+Counts
proj=System+Xr+-+DMDR/CW
workspaceName=
woId=
vendorId=Microstrategy
0 голосов
/ 11 мая 2018

Если ваши строки URL соответствуют предсказуемому формату, вы можете захватить соответствующие части URL с помощью regexp_replace

select regexp_replace(
    regexp_substr(url, '[?&]mstrContentType=([^&]*)')
    '[^=]*=(.*)'
    '\1'
)

. Это вернет значение параметра mstrContentType -подстрока справа от знака равенства, но перед следующим параметром.

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