Oracle CLOB处理:文本查找对比

CLOB里保存的文本格式是
[NAME
李大哥
AGE
20
…]
或者

[暂无登记]

业务要求:要查询出来CLOB的内容,并且找到里面有个文本是 '暂无登记’的数据。

涉及到的操作:

去除换行:select replace(字段名,chr(10),’’) from dual;

去除回车:select replace(字段名,chr(13),’’) from dual;

去掉左右空格:select trim(字段名) from dual;

判断COLB的长度:select DBMS_LOB.GETLENGTH(字段名) from 表名;

转换COLB为字符:select DBMS_LOB.SUBSTR(字段名,4000) from 表名;

期间可能报错:
60502:缓冲区太小,我的解决办法是把查询的from后面的表的数据缩减,先把一些限制条件加入子表,(因为基表很大,但是业务数据只有几百条,用几个条件先筛选一部分数据)解决了这个问题。
64203:CLOB中格式符号太多,需要只摘取文本,就可以解决这个问题。

最后将以上提到的都组合在一起就是

select trim(replace(replace(t1.字段名,chr(10),’’),chr(13),’’))
from (select 字段名 from Table t where t.id = ? and DBMS_LOB.GETLENGTH(t.字段名) <6 and ) t1
where DBMS_LOB.SUBSTR(t1.字段名,4000) = ‘暂无登记’;

(这里其实可以不用子查询也是可以的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值