LISTAGG ORA-01489: result of string concatenation is too long XMLAGG

    科技2025-05-31  39

    查询的时候遇到一个错误, 查看代码后发现是 LISTAGG返回记录太长导致的。 可以使用XMLAGG函数替代

     

    SELECT name, REGEXP_REPLACE(LISTAGG(GDW.score,',') WITHIN GROUP (ORDER BY GDW.score),'([^,]+)(,\1)*(,|$)', '\1\3') AS scores --SUBSTR(XMLAGG(XMLELEMENT(GDW, ',', GDW.score) ORDER BY GDW.score).EXTRACT ('//text()'), 2) AS scores1

    FROM student

    group by name

    Processed: 0.011, SQL: 8