zoukankan      html  css  js  c++  java
  • Oracle instr 及 like

    原文: http://www.cnblogs.com/crazyjava/archive/2012/10/31/2748202.html

    instr(string1,string2[,start_position[,nth_appearence]])

    string1:要在此字符串中查找。

    string2:要在string1中查找的字符串。

    start_position:从string1开始查找的位置。可选,默认为1,正数时,从左到右检索,负数时,从右到左检索。

    nth_appearence:查找第几次出现string2。可选,默认为1,不能为负。

    注:如果没有查找到,返回0。

     例如:

    select instr('abcd','a') from dual;  --返回1
    select instr('abcd','c') from dual;  --返回3
    select instr('abcd','e') from dual;    --返回0

    该函数可以用于模糊查询以及判断包含关系:

    例如:

    ① select code, name, dept, occupation  from staff  where instr(code, '001') > 0;

      等同于

      select code, name, dept, occupation  from staff  where code like '%001%' ;

    ② select ccn,mas_loc from mas_loc where instr('FH,FHH,FHM',ccn)>0;

      等同于

      select ccn,mas_loc from mas_loc where ccn in ('FH','FHH','FHM');

    另一篇文章:

    表中将近有100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。

    SQL> set timing on
    SQL> select count(*) from t where instr(title,’oracle’)>0;

    COUNT(*)
    ———-
    5478

    Elapsed: 00:00:11.04
    SQL> select count(*) from t where title like ‘%oracle%’;

    COUNT(*)
    ———-
    5478

    Elapsed: 00:00:31.47

    注:

    instr(title,'oracle’)>0 相当于like

    instr(title,'oracle’)=0 相当于not like

    作者:robert
    出处:http://www.cnblogs.com/robertsun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有错误,欢迎指出。以免更多的人被误导。
    欢迎留言交流。
  • 相关阅读:
    面试可能遇到的关联式容器(map、set等)相关问题
    C++学习 STL组件之vector部分总结
    C++ 菱形虚拟继承 与 指针偏移问题
    C++ 关键字 explicit 的使用
    C++ sort()排序函数用法
    C++ 字符流 stringstream
    C/C++ 每日一题
    C/C++ 超长正整数相加
    C++ 二叉搜索树原理及其实现
    Tomcat安装
  • 原文地址:https://www.cnblogs.com/robertsun/p/4106763.html
Copyright © 2011-2022 走看看