PLSQL 从字符串中获取值
PLSQL Getting values from string
我有这个 varchar2(2000) 字符串:
id=100\nid2=0\nid3=0\dtext='more Text'
我只想获取值,例如more Text
或 0
(id3).
我试图使用自定义的 SPLIT 函数,其中分隔符是 \n 但这只是 returns 我,例如 id3=0
(在这种情况下我需要 '0' 作为结果)。
我怎样才能更有效地做到这一点?
and I want to get only the values e.g. more Text.
只需使用 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>
您可以通过以下方式获取所有值:
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)|([^=]=.+?$)'))
我有这个 varchar2(2000) 字符串:
id=100\nid2=0\nid3=0\dtext='more Text'
我只想获取值,例如more Text
或 0
(id3).
我试图使用自定义的 SPLIT 函数,其中分隔符是 \n 但这只是 returns 我,例如 id3=0
(在这种情况下我需要 '0' 作为结果)。
我怎样才能更有效地做到这一点?
and I want to get only the values e.g. more Text.
只需使用 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>
您可以通过以下方式获取所有值:
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)|([^=]=.+?$)'))