【问题标题】:Facing result of string concatination too long面对字符串连接的结果太长
【发布时间】:2021-05-26 17:30:45
【问题描述】:

在向表中插入数据时,我遇到了错误字符串文字太长。 因此,为了解决这个问题,我使用了连接运算符。 例如:值是 ' || ' 太大 但是问题仍然没有解决,现在面临字符串连接的结果太长。 列的数据类型是clob。

Create table testlongstring(name clob)
Insert into testlongstring values('value is too '|| ' big')

面临字符串连接的问题结果太长。

如果我输入普通字符串'值太大' 它使 strinf litteral 太长了

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    您正在连接两个 CHAR/VARCHAR2 文字值,并且输出是 CHAR/VARCHAR2 文字,如果您要连接的两个表达式的长度超过 4000 个字节,则会失败。

    例如:

    Insert into testlongstring values(
      RPAD('a', 4000, 'a') || RPAD('b', 4000, 'b')
    );
    

    将尝试创建一个 8000 字节的字符串(在插入表之前)并且将失败并显示错误:

    ORA-01489: result of string concatenation is too long
    

    你需要做的是先连接一个CLOB值,比如EMPTY_CLOB(),然后连接运算符会返回一个CLOB值:

    Insert into testlongstring values(
      EMPTY_CLOB() || RPAD('a', 4000, 'a') || RPAD('b', 4000, 'b')
    );
    

    db小提琴here

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 2013-04-04
      • 2011-08-13
      • 2012-11-27
      • 2016-01-14
      • 1970-01-01
      • 2015-06-28
      • 2012-05-12
      相关资源
      最近更新 更多