ORA-01704: string literal too long Oracle数据库更新表字段的时候报以上错误

这个字段类型为clob,网上查了很多方法,感觉都不理想!说说我自己的思路!
先说结果:
我的由于是更新字段(插入的话可以参考使用||拼接字符串),所以我选择使用replace函数进行操作的!

由于这个字段非常的大,我在执行更新的时候都会报错:
在这里插入图片描述
我尝试了拼接的方式,过程很痛苦,直接放弃了!
我重新查看了我的诉求,要把T_BILL_DATA表的JSON_DATA字段值中的某些属性更新,我于是想到replace函数

-- 替换函数:REPLACE(source, search_str, replace_str)

select * from T_VOUCHER_MAIN_AREA WHERE MAIN_BILL_CODE = 'ER374962782' AND VOUCHER_NO = '9700000183';
-- 查询出对应的BILL_MAIN_ID='11ed9f7fbd4657fd940c052d8e6f8edc'
-- 把上述ID对应的JSON_DATA中的"9700000146"替换成"9700000183" (注意我这里的双引号是这个字段里面就有的)
UPDATE T_BILL_DATA SET JSON_DATA = REPLACE((SELECT JSON_DATA FROM T_BILL_DATA WHERE BILL_MAIN_ID = '11ed9f7fbd4657fd940c052d8e6f8edc') , '"9700000146"', '"9700000183"')
 WHERE BILL_MAIN_ID = '11ed9f7fbd4657fd940c052d8e6f8edc'

这样就更新成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值