REGEXP_REPLACE和REGEXP_EXTRACT

时间:2018-11-07 16:33:06

标签: regexp-replace

我的日志中有一个URI列。我必须解析它并从中删除某些部分,并将其存储在表中。例如,如果我有/v7/cp/members/~PERF1SP826T90869AN/options,则必须将其存储为/v7/cp/members/*/options。我可以使用REGEXP_REPLACE做到吗?

我还要查看是否可以将从URI中删除的那部分存储为另一列? 对于/v7/cp/members/~PERF1SP826T90869AN/options中的示例,我应该将/v7/cp/members/*/options作为一列存储,并将PERF1SP826T90869AN存储在一个单独的列中。

1 个答案:

答案 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>