oracle中查找Blob类型数据中的字符串 |
您所在的位置:网站首页 › oracle查字符串大小 › oracle中查找Blob类型数据中的字符串 |
前景回顾: 刚一个大MM 问我如何查询Blob类型数据的字符串. 解决方案: 使用 dbms_lob.instr 和 CAST_TO_RAW可解决: 示例: select * from tesu where dbms_lob.instr(msg,utl_raw.CAST_TO_RAW('darren'),1,1) >0.
扩展: 1), 插入: 可使用to_blob函数 insert into tesu(msg) values(to_blob('adddda')) ; 还有一种是使用empty_blob()函数,先插入一个空的, 然后在进行插入值 java使用jdbc, 简单,略. 2). 更新: 还是使用to_blob update tesu set msg = to_blob('adddda') where id =1;
3)与clob的区别 BLOB全称为二进制大型对象(Binary Large Object)。 它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节 CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似, 只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。 可存储的最大大小为4G字节 4), 性能: 能不用尽量不用 ??? 5), 其它 a. 一个Blob/Clob字段包括lobindex和lobsegment b. Lob缺省可以存放在表中(表字段),条件是: 1.它的大小小于4kb 2.并且在定义的时候没有使用(disable storage inrow)字句(缺省是enable) 当lob大于4kb的时候它会被存放到lobsegment中 c. 当lob存放在表中的时候,它可以被缓存, 对于它的操作效率远远高于存储在lobsegment中的lob(不用lobindex) d. 存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高, 所以对于大于4kb的lob字段千万不要频繁更新,效率非常低 e. 存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache), 这对于中等大小的lob(比如几k~几十k)很有效果,减少物理IO
备注一个不相关的: 该MM在她的触发器中引用了自身表做了查询等操作,然后就报错啦.. 解决方法: 直接用当前记录就可以进行相应的操作,不要代入当前操作表.
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |