SQL长字符串处理

环境:oracle12,clob字段

问题描述:ORA-01704: string literal too long

​ 更新的字段太长,可以考虑变量替换

​ ORA-06550 string literal too long

​ 超出string32k长度限制,只能用拼接符连接

情景一:用declare变量替换

遇到要往数据库插入长字符串,该字符串很长并且无法从该库中其他表串表得到。

直接将该字符串复制进SQL中就会出现ORA-01704: string literal too long的报错

考虑使用变量替换的办法:

declare
v_clob1 clob :='长字符串';
begin
update table_name set REQUEST = v_clob1 where id = '0f5f505127ef41d7a7cead11ed';
end;

当长字符串小于32k时,可以用变量替换的方法直接改

情景二:正则表达式

需要修改长字符串的内容,此时如果用declare定义变量手动修改后再用字符串copy进去,也可以解决。

但是如果此时字符串长度特别长,远远超过32k,那么可以考虑正则表达式直接替换

SQL里面的replace方法

如下,要加下面表中的name从’很好‘的好字更新成其他字符串

image

update table set name = replace(name,'好','Provided token isn''t active') where id = '0f5f505127ef41d7a7cead11eddc5f26';

image

对于长字符串并且原先该值存在,直接用replace函数用起来方便很多

posted @   yorkiiz  阅读(695)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示