oracle - ORA-01489 - 字符串连接的结果太长 - 附加大 Varchar 列
问题描述
我正在尝试附加 4 列数据类型,例如 varchar2(4000) || varchar2(4000) || varchar2(4000) || varchar2(100) 并尝试将其分配给表的 CLOB 数据类型列。
像下面这样的东西,
insert into test as select TO_CLOB (A || B || C || D) as final from test_a;
表 1:测试
A CLOB;
表 2:Test_a
A varchar2(4000)
B varchar2(4000)
C varchar2(4000)
C varchar2(100)
我得到错误ORA-01489 Result of string concatenation is too long
我也尝试过像下面这样单独进行 CLOB 转换,但执行时间太长。
insert into test
as select TO_CLOB (A ) || TO_CLOB (B ) || TO_CLOB (C ) || TO_CLOB (D ) ) as final from test_a;
请让我知道是否有其他方法可以做到这一点。
PS我正在使用Oracle 12c version
解决方案
当 || 的参数之一发生向 clob 的隐式转换 是一个 clob,所以请尝试以下操作:
原始查询:
select rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 100, '0') from dual
ORA-01489: result of string concatenation is too long
连接的第一个成员中的 TO_CLOB:
select TO_CLOB(rpad('0', 4000, '0'))||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 100, '0') from dual
1 row(s) selected
推荐阅读
- php - Laravel 多语言路由前缀
- java - EasyMock/PowerMock - 模拟静态方法抛出错误:没有可用的模拟的最后一次调用
- java - 无法运行创建的 -jar 文件
- java - 是否可以在 Fitnesse 服务器 VM 中运行 Slim 客户端
- python - PIP 安装 pysftp:连接超时
- r - 如果单击 visNetwork 提示中的取消,操作选项会消失
- python - 将布局定位到主布局python Autodesk Maya的底部
- powershell - 在第二个`/`之后存储所有内容
- ios - 如何使用已安装的 SSL 证书来保护 iOS 应用程序?
- java - Java Draw 不动的蛇