database - Oracle 将文本拆分为多行

标签 database oracle odp.net varchar

在 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

参见:Comma Separated values in Oracle

关于database - Oracle 将文本拆分为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991196/

相关文章:

windows - PHP 5.3.1 未在 Windows 上加载 php_oci8.dll

c# - ODP.NET 存储过程和可选参数

android - 如何创建一个实时修改的android应用程序数据库?

mysql - c语言与mysql(如何将mySQL数据库包含到程序中)

database - PostgreSQL 管理和监控

sql - 如何同时运行两个慢速 SQL SELECT 语句

sql - 实现 n 对 m 关系的正确方法

mysql - 更新 mysql 时出现重复错误

vb.net - 仅当作为服务运行时 ODP.NET ORA-12154 TNS 错误

c# - 如何让非托管 ODP.NET(64 位)在 64 位操作系统上的 ASP.NET 中工作?