sql - 截断的 LISTAGG 字符串

标签 sql oracle oracle11g aggregate-functions oracle11gr2

我正在使用 Oracle 11g r2,我需要连接多行中的字符串 (VARCHAR2, 300)。我正在使用LISTAGG在连接的字符串达到限制之前,它的效果很好。那时我收到一个 ORA-01489: result of string concatenation is too long .

最后,我只想要连接字符串的前 4000 个字符。我如何到达那里并不重要。我会接受低效的解决方案。

这是我的查询:

SELECT LISTAGG(T.NAME, ' ') WITHIN GROUP (ORDER BY NULL)
FROM T

最佳答案

此代码适用于任何长度的数据,而且速度足够快

SELECT REPLACE(
         REPLACE(
           XMLAGG(
             XMLELEMENT("A",T.NAME)
           ORDER BY 1).getClobVal(),
         '<A>',''),
       '</A>','[delimiter]')
FROM T

关于sql - 截断的 LISTAGG 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315243/

相关文章:

sql - 在 SSIS 包中获取错误 "The conversion of the varchar value ' 6160382514d9 7' overflowed an int column"

oracle - SQL Developer太慢了。我还能使用什么?

oracle11g - Oracle 数据库链接错误

sql - 为什么这个触发器不好?

java - 如何在左侧填充连字符: Oracle

c# - SqlBulkCopy 无法将值 NULL 插入到列中

sql - 按多行分组

GNU/Linux 上的 Oracle SQLPlus 默认配置文件位置

c - Oracle Pro*C : Handling end of fetch cursor

mysql - 如何从 ORACLE 中的函数中将 1,2,3.... 返回到单独的行中的 N?