面对字符串连接太长的结果

A K*_*A K 1 sql oracle plsql

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

Create table testlongstring(name clob)
Insert into testlongstring values('value is too '|| ' big')
Run Code Online (Sandbox Code Playgroud)

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

如果我把普通字符串“值太大”它给 strinf litteral 太长了

MT0*_*MT0 5

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

例如:

Insert into testlongstring values(
  RPAD('a', 4000, 'a') || RPAD('b', 4000, 'b')
);
Run Code Online (Sandbox Code Playgroud)

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

ORA-01489: result of string concatenation is too long
Run Code Online (Sandbox Code Playgroud)

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

ORA-01489: result of string concatenation is too long
Run Code Online (Sandbox Code Playgroud)

db<>在这里摆弄