25. instr用法-9游会

大家好!今天让小编来大家介绍下关于25. instr用法的问题,以下是酷知号的小编对此问题的归纳整理,让我们一起来看看吧。

很多时候,我们要进行字符串匹配,在sql语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果: 

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 instrcode, ‘001’) > 0;

  等同于

  select code, name, dept, occupation  from staff  where code like ‘1%’ ;

② 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’);

sql> select count*) from t where instrtitle,‟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

注: 
instrtitle,’oracle‟)>0 相当于like 

instrtitle,’oracle‟)=0 相当于not like 

–1.从第3个字符开始搜索 
sql> select instr’oracleor’,’or’, 3) position from dual; 

position 

———-         

     7 

–2.从第1个字符开始,搜索第2次出现子串的位置 

sql> select instr’oracleor’,’or’, 1, 2) position from dual; 

position 

———-        

     7 

–3.从倒数第1个字符开始,搜索第1次出现子串的位置 

sql> select instr’oracleor’,’or’, -1, 1) position from dual; 

position 

———-     

    7

–4.从倒数第1个字符开始,搜索第2次出现子串的位置

sql> select instr’oracleor’,’or’, -1, 2) position from dual;

position

———-    

     1

经典例子:

select * from tuser a where instr’,’||select substrowner,8,lengthowner)) from os_currentstep where entry_id=4252300)||’,’,’,’||a.id||’,’)>0;

select substrowner,8,lengthowner)) from os_currentstep where entry_id=4252300) 结果为字符串:3993,451,1889,1482

如果直接这么写:select * from tuser a where a.id in select substrowner,8,lengthowner)) from os_currentstep where entry_id=4252300)会报无效数字

以上就是小编对于25. instr用法问题和相关问题的解答了,25. instr用法的问题希望对你有用!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文链接:https://www.andon8.com/469543.html

网站地图