我需要将像112^3^1^1^
这样的字符串解析为单独的值。
第一个(' 112')是order_no,第二个是line_no,第三个是release_no,第四个是receipt_no。
我可以在Oracle中使用哪种正则表达式?
答案 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)。