PLSQL从字符串获取值

时间:2015-01-27 10:48:54

标签: sql oracle oracle11g

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

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

我希望只获取值,例如more Text0(id3)。

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

我怎样才能更有效率?

2 个答案:

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