Oracle中 INSTR() 的使用与详解

Oracle中 INSTR() 函数

*
最近发现了这个函数,感觉还蛮好用的对于一些比较复杂的模糊查询还是比较有帮助的;也希望大家给与文章修改建议
*
解析方法格式
格式一:
--INSTR (主字符串, 查询字符串)
INSTR (string1, string2)
--示例
SELECT INSTR('zhongguo','s') AS TESTINSTR1 FROM TABLE -- 0
SELECT INSTR('zhongguo','zhong') AS TESTINSTR1 FROM TABLE -- 1
SELECT INSTR('zhongguo','guo') AS TESTINSTR1 FROM TABLE -- 6
SELECT INSTR('zhongguo','g') AS TESTINSTR1 FROM TABLE -- 5

--解析
从上面的例子可以看出-INSTR (string1, string2)-在进行查询的时候
1、INSTR 的查找个数是从1开始的123456.......
2、INSTR 只会获取到第一次出现的位置下标
格式二:
--instr(主字符串, 查询字符串, 起始位置, 出现第几次)
INSTR(string, string2, startNum, appearTime)
--示例
SELECT INSTR('zhongguo','zhong',2,1) AS TESTINSTR1 FROM TABLE -- 0 (从第2位开始查找,找到第1次出现的位置)
SELECT INSTR('zhongguo','uo',1,1) AS TESTINSTR1 FROM TABLE -- 7 (从第1位开始查找,找到第1次出现的位置)
SELECT INSTR('zhongguo','o',1,1) AS TESTINSTR1 FROM TABLE -- 3 (从第1位开始查找,找到第1次出现的位置)
SELECT INSTR('zhongguo','g',1,1) AS TESTINSTR1 FROM TABLE -- 5 (从第1位开始查找,找到第1次出现的位置)
SELECT INSTR('zhongguo','g',6,1) AS TESTINSTR1 FROM TABLE -- 6 (从第6位开始查找,找到第1次出现的位置)
SELECT INSTR('zhongguo','g',6,2) AS TESTINSTR1 FROM TABLE -- 0 (从第6位开始查找,找到第2次出现的位置)

--解析
从上面可以看出-startNum-表示从主字符串的哪一位开始查找,-appearTime-表示了第几次出现的下标
从上面的案例里面可以看出-INSTR-可以做到与-LIKE-同一种效果的模糊查询,最近根据项目功能写了点模糊查询的sql
sql示例and查询条件
--在这里可以根据判断是否大于0的条件来进行断模糊查询功能的实现
 AND (
 ((INSTR(NAME, '汽油') > 0 AND INSTR(NAME, '汽油') > 0) AND (INSTR(SPECIFICATIONMODEL, '163#') = 0))  
 OR (INSTR(NAME, '燃料油') > 0 )  
 OR (INSTR(NAME, '石脑油') > 0 )  
 OR (INSTR(NAME, '航煤') > 0 )  
 OR (INSTR(NAME, '柴油') > 0 )  
 OR (INSTR(NAME, '溶剂油') > 0 ) 
 ) 
总结
INSTR函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。
在此函数中可以自定义查找的初始位置,与出现次数的位置。
在一些特定的sql查询中可以替换like进行模糊查询
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值