sql - LISTAGG函数: "result of string concatenation is too long"

标签 sql oracle

我正在使用 Oracle SQL Developer 版本 3.0.04。我尝试使用函数 LISTAGG 将数据分组在一起..

    CREATE TABLE FINAL_LOG AS
    SELECT SESSION_DT, C_IP, CS_USER_AGENT,
    listagg(WEB_LINK, ' ')
        WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) "WEB_LINKS"
        FROM webviews
        GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
        ORDER BY SESSION_DT

但是,我不断收到错误,

SQL Error: ORA-01489: result of string concatenation is too long

我非常确定输出可能会超过 4000,因为这里提到的 WEB_LINK 是 url 茎和 url 查询的串联值。

有什么办法可以绕过它或者有其他选择吗?

最佳答案

您可以使用 the XMLAGG function 完成类似的功能:

SELECT RTRIM(XMLAGG(XMLELEMENT(E,colname,',').EXTRACT('//text()') ORDER BY colname).GetClobVal(),',') AS LIST
FROM tablename;

这将返回一个 clob 值,因此行数没有限制。

关于sql - LISTAGG函数: "result of string concatenation is too long",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795220/

相关文章:

sql - 使用 clickhouse 计算当前行和上一行之间的差异(或增量)

sql - 为什么EF查询引用属性时会生成这个sql

java - JPA 存储库 :Delete a row from database using native query

sql - PL/SQL 等效于 T-SQL 面向集合的变量串联

c++ - OCCI与C++错误:TNS:.net服务名称未正确指定

c - OCIStmtPrepare 返回 OCI_INVALID_HANDLE

mysql比较2个子字符串列

mysql - GROUP BY 周返回不正确的结果

oracle - 执行的过程未插入行

sql - ORA-19279 : XPTY0004 - XQuery dynamic type mismatch: expected singleton sequence