SQL正反向模糊查询(ORACLE)

来源:互联网 发布:mac科研软件 编辑:程序博客网 时间:2024/05/01 20:57
         JAVA开发中,经常会使用SQL进行模糊查询,说到模糊查询无非就是正反模糊查询,而正反模糊查询所使用的ORACLE函数分别为:like、instr。
 
        1、SQL正向模糊查询,也就是我们经常使用的like模糊查询,这里就不多做介绍,如:
                 SELECT * FROM TABLE_NAME T WHERE T.NAME LIKE '%唐飞%';
               注:NAME为TABLE_NAME 中的一个字段,为VARCHAR类型。
       
        2、SQL反向模糊查询,需要用到的函数为instr(str1,str2),instr(str1,str2)表示str1包含str2,如:
                 SELECT * FROM TABLE_NAME T WHERE INSTR('唐飞',T.NAME)>0;
                     注:NAME为TABLE_NAME 中的一个字段,为VARCHAR类型。instr(str1,str2)>0表示str1包含str2;          instr(str1,str2)>=表示str1不包含str2。

        由1、2我们很容易可以看出来instr完全可以替代like,至少在以上示例中可以替代。只要把str1和str2换个位置就可以达到like的效果
  
       网上看了下like与instr的查询效率问题,大概是这样说的:
              instr的效率是比like要高些(orace对内建函数做了优化),而且使用like时,一些索引是不能用的,但oracle支持函数索引,如果使用函数索引的话,执行更快。   
       一般的数据库中,instr和like的效率是没有多大差别的,但对于oracle数据库可以通过函数索引来提高instr的执行效率。 
0 0