gpt4 book ai didi

sql - 使用 to_clob 后字符串连接的结果太长

转载 作者:行者123 更新时间:2023-12-04 23:45:36 24 4
gpt4 key购买 nike

我正在尝试通过运行下面的 sql 来创建 TableView

  SELECT   IACM1.CMNT_REAS_TYP,
TO_CLOB(LPAD (
LISTAGG (IACM1.CMNT_TXT, ' ')
WITHIN GROUP (ORDER BY IACM1.LN_NUM),
4000,
LISTAGG (IACM1.CMNT_TXT, ' ')
WITHIN GROUP (ORDER BY IACM1.LN_NUM)
))
FROM FT_T_IACM IACM1, FT_T_IACM IACM2
WHERE IACM1.ISSACT_ID = IACM2.ISSACT_ID
AND IACM1.CMNT_REAS_TYP = IACM2.CMNT_REAS_TYP
GROUP BY IACM1.cmnt_reas_typ;

但是我得到下面的错误

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.

我查找并找到了使用 to_clob 的建议,但它仍然抛出此错误。我正在使用甲骨文 11g。提前感谢您的帮助。

最佳答案

LISTAGG 中最长的串联字符串可以是 4000 个字符。在此查询中,一个或多个 CMNT_REAS_TYP 值的 CMNT_TXT 的长度总和似乎超过 4000。LISTAGG 在 LPAD 将其截断为 4000 个字符之前构建字符串 - 因此 LPAD 在这种情况下无效。此外,TO_CLOB 没有影响,因为 LISTAGG 在发生任何其他事情之前进入 varchar2。

解决此问题的一种方法是,如果可能的话,在分组依据中添加其他字段。如果这不是一个选项,您可以尝试使用 COLLECT 而不是 LISTAGG - 在获取数据类型匹配方面会遇到更多问题,但这是可行的。

这里有一个链接,比较了 LISTAGG 和 COLLECT 以及如何使用 COLLECT:http://www.oracle-developer.net/display.php?id=515

关于sql - 使用 to_clob 后字符串连接的结果太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com