我有这个varchar2(2000)字符串:
id=100\nid2=0\nid3=0\dtext='more Text'
我希望只获取值,例如more Text
或0
(id3)。
我试图使用自定义的SPLIT函数,其中separator是\ n但是这只返回我的例如id3=0
(在这种情况下我需要' 0'作为结果)。
我怎样才能更有效率?
答案 0 :(得分:2)
我希望只获取值,例如更多文字。
只需使用 SUBSTR 和 INSTR
SQL> WITH DATA AS
2 ( SELECT q'[id=100\nid2=0\nid3=0\dtext='more Text']' str FROM dual
3 )
4 SELECT SUBSTR(str,instr(str, '''')+1,LENGTH(SUBSTR(str,instr(str, '''')))-2) str
5 FROM DATA
6 /
STR
---------
more Text
SQL>
答案 1 :(得分:1)
您可以使用以下内容获取所有值:
WITH DATA AS
(SELECT q'[id=100\nid2=0\nid3=0\ndtext='more Text']' str FROM dual)
SELECT replace(substr(regexp_substr(str,'(=.+?\n)|(=.+?$)',1,level),2),'\n') v
FROM DATA
CONNECT BY LEVEL <= LENGTH(regexp_replace(str,'([^=]+=.+?\n)|([^=]=.+?$)'))