在 varchar2 列中,我有如下文本值:
aaaaaa. fgdfg.
bbbbbbbbbbbbbb ccccccccc
dddddd ddd dddddddddddd,
asdasdasdll
sssss
如果我从表中选择 id=... 的列,通常我会在一行中得到整个文本。 但我想获得多行结果,上面的例子是 5 行。 我必须只使用一个 select 语句,分隔符将是换行符或回车符(oracle 中的 chr(10)、chr(13))
谢谢!
最佳答案
也许是这样(但这完全取决于您使用的 Oracle 版本):
WITH yourtable AS (SELECT REPLACE('aaaaaa. fgdfg.' ||chr(10)||
'bbbbbbbbbbbbbb ccccccccc ' ||chr(13)||
'dddddd ddd dddddddddddd,' ||chr(10)||
'asdasdasdll ' ||chr(13)||
'sssss '||chr(10),chr(13),chr(10)) AS astr FROM DUAL)
SELECT REGEXP_SUBSTR ( astr, '[^' ||chr(10)||']+', 1, LEVEL) data FROM yourtable
CONNECT BY LEVEL <= LENGTH(astr) - LENGTH(REPLACE(astr, chr(10))) + 1
关于database - Oracle 将文本拆分为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991196/