我的日志中有一个URI列。我必须解析它并从中删除某些部分,并将其存储在表中。例如,如果我有/v7/cp/members/~PERF1SP826T90869AN/options
,则必须将其存储为/v7/cp/members/*/options
。我可以使用REGEXP_REPLACE做到吗?
我还要查看是否可以将从URI中删除的那部分存储为另一列?
对于/v7/cp/members/~PERF1SP826T90869AN/options
中的示例,我应该将/v7/cp/members/*/options
作为一列存储,并将PERF1SP826T90869AN
存储在一个单独的列中。
答案 0 :(得分:0)
如果您使用的是Oracle,请使用以下方法:
SQL> with tbl(str) as (
select '/v7/cp/members/~PERF1SP826T90869AN/options' from dual
)
select regexp_replace(str, '(.*?)(/|$)', '*/', 1, 5) as replaced,
regexp_substr(str, '(.*?)(/|$)', 1, 5, NULL, 1) as fifth_element
from tbl;
REPLACED FIFTH_ELEMENT
------------------------ -------------------
/v7/cp/members/*/options ~PERF1SP826T90869AN
SQL>