PLSQL 从字符串中获取值

PLSQL Getting values from string

我有这个 varchar2(2000) 字符串:

id=100\nid2=0\nid3=0\dtext='more Text'

我只想获取值,例如more Text0 (id3).

我试图使用自定义的 SPLIT 函数,其中分隔符是 \n 但这只是 returns 我,例如 id3=0(在这种情况下我需要 '0' 作为结果)。

我怎样才能更有效地做到这一点?

and I want to get only the values e.g. more Text.

只需使用 SUBSTRINSTR

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)|([^=]=.+?$)'))