我有一个包含下一个字符串的clob字段的表:
"hello world Chr(13)
hello world 2 chr(13)
hello world 3"
我试图获取文字" hello world 2
"在第一个和最后一个断裂线之间,但我仍然不能。
我尝试使用DBMS_LOB.INSTR
和regexp_substr
但没有成功......任何人都可以帮助我吗?
非常感谢。
答案 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函数;它们比正则表达式解决方案快得多。