pl sql dbms_lob.substr或regex_substr在新行之间获取文本

时间:2016-10-06 22:01:14

标签: oracle plsql

我有一个包含下一个字符串的clob字段的表:

"hello world Chr(13)
hello world 2 chr(13)
hello world 3"

我试图获取文字" hello world 2"在第一个和最后一个断裂线之间,但我仍然不能。

我尝试使用DBMS_LOB.INSTRregexp_substr但没有成功......任何人都可以帮助我吗?

非常感谢。

1 个答案:

答案 0 :(得分:4)

假设您的字符串实际上是我在评论中建议的(并反映在下面的测试字符串中):

with inputs ( str ) as (
       select to_clob('hello world' || chr(13) || 'hello world 2' || chr(13) ||
                                                           'hello world 3') from dual
     )
select dbms_lob.substr(str, 
                dbms_lob.instr(str, chr(13), 1, 2) - dbms_lob.instr(str, chr(13), 1, 1), 
                dbms_lob.instr(str, chr(13), 1, 1))           as second_line
from   inputs;



SECOND_LINE                                                                     
----------------
hello world 2 

每当您必须处理CLOB时,请使用dbms_lob函数;它们比正则表达式解决方案快得多。