【发布时间】:2017-02-06 16:26:49
【问题描述】:
我处理这个查询并得到这个错误:
Oracle - ORA-01489:字符串连接的结果太长
请有人帮忙解决这个问题
SELECT LISTAGG(RCRDNUM) WITHIN GROUP (ORDER BY RCRDNUM)
FROM (SELECT (ERR.RCRDNUM || ',') AS RCRDNUM
FROM TABLENAME ERR
INNER JOIN (SELECT UPPER(REGEXP_SUBSTR('No value present for CNTRY_CD column for the record',
'[^,]+', 1, LEVEL)) ERR_MSG
FROM DUAL
CONNECT BY REGEXP_SUBSTR('No value present for CNTRY_CD column for the record',
'[^,]+', 1, LEVEL)
IS NOT NULL) ERRMSG_P
ON (UPPER(ERR.ERRMSG) = ERRMSG_P.ERR_MSG
OR 'No value present for CNTRY_CD column for the record' IS NULL))
【问题讨论】:
-
listagg的结果是否可能超过 4000 个字符?如果是这样,你不能使用listagg(或者你需要在你的内联视图中提供一个过滤器来减少返回的行数)。如果您需要生成更长的字符串,您可以编写自己的聚合函数来处理clob数据类型(网上有一些实现)。 -
@JustinCave - ...或使用
xmlagg()