REGEXP_REPLACE 和 REGEXP_EXTRACT

REGEXP_REPLACE and REGEXP_EXTRACT

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

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

如果您使用的是 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>