对于内容很多的时候clob打字段模糊查询很慢,整理一个小方法: 1,在查询的列上建索引 2,对于要查询的clob字段使用一下语句创建索引 CREATE INDEX idx_zs_info_note ON zs_info(note) INDEXTYPE is CTXSYS.CONTEXT; 3.查询的时候对于clob字段使用如下方法,不要使用like select * frominfo where contains(note,'XXXXX')>0 order by id desc
比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 select * from a where b1=''; sql中判断非空不能用等号,因为null在sql中被看作特殊符号,必须使用关键字 is和not应该如此使用: select * from A where b1 is null 或者: select * from A where b1 is not null
在11G以下版本中oracle有自带的函数wm_concat可以实现,如: select wm_concat(id) from table where col='1' 但是在12C版本中此函数无法使用,但可以使用另一种方式实现,如: select xmlagg(xmlparse(content upper(id)||',' wellformed) order by id).getclobval() from table where col='1' 该函数返回结果为一个Blob类型的大字段,且因为
1. 理解ROWID ROWID是由Oracle自动加在表中每行最后的一列伪列,既然是伪列,就说明表中并不会物理存储ROWID的值:你可以像使用其它列一样使用它,只是不能对该列的值进行增.删.改操作:一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的,即使发生行迁移,该行的ROWID值也不变.SELECT t.rowid,t.* FROM DM_COMM_PREM_LIST t where LIST_ID= '3106355531'; 2. SQL优化器优化方式1)基于规则的优化
注:本文来源于:<Oracle中如何查询CLOB字段类型的内容> 语法 select * from table_name where dbms_lob.instr(字段名(clod类型),'查询条件',1,1) > 0; 具体实例 /*查询质押单据信息*/ SELECT * FROM EDI.MID_LOG_OPEN_PLATFORM WHERE SENDER='J***D' AND CREATE_TIME >SYSDATE-1 AND SERVICE_ID='pledgeRequ