我正在使用 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/