当前位置: 首页 > 面试题库 >

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

尤祖鹤
2023-03-14
问题内容

我正在尝试通过运行以下sql创建表视图

  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;

但我得到error以下

ORA-01489:字符串连接的结果太长01489。00000-“字符串连接的结果太长”
原因:字符串连接的结果大于最大大小。操作:确保结果小于最大大小。

我抬起头,发现了使用to_clob的建议,但仍引发此错误。我正在使用oracle 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



 类似资料:
  • 问题内容: 我正在使用Oracle SQL开发人员版本3.0.04。我试图使用该功能将数据分组在一起。 但是,我不断收到错误消息, 我很确定输出可能会超过4000,因为这里提到的WEB_LINK是url stem和url query的串联值。 有没有解决的办法,或者还有其他选择吗? 问题答案: 由于聚合字符串的长度可以超过4000个字节,因此不能使用该函数。您可能会创建一个用户定义的集合函数,该函

  • 问题内容: 我使用来了解Java与运算符的工作方式。 它是用同样的操作? 问题答案: 不。使用和做不一样。 在Java中,字符串实例是不可变的。 因此,如果您这样做: 每次连接时都在创建新的字符串。 另一方面,StringBuilder就像一个缓冲区,可以在追加新Strings时根据需要增长。 经验法则是(由于我的评论而改变): 如果要进行大量连接(例如,在循环内进行连接,或生成由多个字符串连接的

  • 问题内容: 为什么当我使用以下操作对字符求和时,它返回数字而不是字符?它不应该给出相同的结果吗? 下面的代码复制了字符: doubleChar(“ The”)→“ TThhee” 问题答案: 以下表达式的结果 是String连接的结果。Java语言规范说明 字符串串联的结果是对String对象的引用,该对象是两个操作数字符串的串联。在新创建的字符串中,左侧操作数的字符位于右侧操作数的字符之前。 的

  • 我在Oracle Database 11g Enterprise Edition 11.2.0.4.0-64位生产、PL/SQL 11.2.0.4.0-生产、CORE 11.2.0.4.0生产、TNS for Linux 11.2.0.4.0-生产、NLSRTL 11.2.0.4.0-生产中运行此查询 但我有一个错误: 即使我设置了所有这些变量:

  • 问题内容: 我有以下代码 输出为。 Java如何完成字符串连接的技巧? 问题答案: 因为Java将表达式转换为类似 实际上,我认为它可能使用s,因此: 解决更高效 这使用“ 字符串”构建器上的方法(针对每种类型),这些方法可以正确处理

  • 本文章将介绍Thymeleaf标准表达式语法中的概念。 学习如何在Thymeleaf模板中显示对象(Bean)的属性值。 已经将类的bean已经设置为名称为的上下文模型。 为这些和属性添加一些格式,学习使用字符串相连接输出。 最后,修改模板以获得一个合理的静态原型(例如,通过一些原型数据替换并显示结果)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创建项