oracle listagg - 字符串连接的结果太长
我有一个问题,我无法解决。我有这样的说法:oracle listagg - 字符串连接的结果太长
SELECT account,
listagg(field1 || ', ') WITHIN
GROUP (
ORDER BY field1
) AS field1
FROM TABLE1
GROUP BY account
我得到一个错误:
ORA-01489: result of string concatenation is too long 01489. 00000 - "result of string concatenation is too long" *Cause: String concatenation result is more than the maximum size. *Action: Make sure that the result is less than the maximum size.
如何解决?我试图做到这一点,但它并没有帮助的SQL函数返回一个字符串必须符合的最高限额内,这是4000
SUBSTR(listagg(field1 || ', ') WITHIN
GROUP (
ORDER BY field1
), 1, 500) AS field1
结果(现在的32K甲骨文12C如果max_string_size=extended
)。
你不能用SUBSTR
截断它,因为那时已经太晚了 - 这是LISTAGG
函数本身引发的异常。
解决此问题的唯一方法是确保被连接的记录数量受到限制 - 例如,对每个account
返回的记录数量设置最大上限,和/或截断每个文件的长度field1
本身。
或使用'XMLAGG'。 –
@Lalit,谢谢你是对的,只需要对应用程序进行一些更改。 –
如果连接时间过长,那么明显的解决方案是不是将其截断? –