正则表达式解析112 ^ 3 ^ 1 ^ 1 ^

时间:2018-03-03 10:39:16

标签: sql regex oracle

我需要将像112^3^1^1^这样的字符串解析为单独的值。

第一个(' 112')是order_no,第二个是line_no,第三个是release_no,第四个是receipt_no。

我可以在Oracle中使用哪种正则表达式?

1 个答案:

答案 0 :(得分:2)

with demo (str) as
     ( select '112^3^1^1^' from dual )
select str
     , regexp_substr(str,'[^^]+',1,1) as order_no
     , regexp_substr(str,'[^^]+',1,2) as line_no
     , regexp_substr(str,'[^^]+',1,3) as release_no
     , regexp_substr(str,'[^^]+',1,4) as receipt_no
from   demo;

STR        ORDER_NO   LINE_NO   RELEASE_NO   RECEIPT_NO
---------- ---------- --------- ------------ ----------
112^3^1^1^ 112        3         1            1

这取决于具有值的每个组件,因为它使用的模式是&#39>一个或多个不是^' 的字符。如果缺少值,则需要进行一些调整,例如'112^3^^1^'(没有release_no)。