Oracle中 INSTR() 函数
*
最近发现了这个函数,感觉还蛮好用的对于一些比较复杂的模糊查询还是比较有帮助的;也希望大家给与文章修改建议
*
解析方法格式
格式一:
INSTR ( string1, string2)
SELECT INSTR( 'zhongguo' , 's' ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'zhong' ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'guo' ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'g' ) AS TESTINSTR1 FROM TABLE
从上面的例子可以看出- INSTR ( string1, string2) - 在进行查询的时候
1 、INSTR 的查找个数是从1 开始的1 、2 、3 、4 、5 、6. . . . . . .
2 、INSTR 只会获取到第一次出现的位置下标
格式二:
INSTR( string, string2, startNum, appearTime)
SELECT INSTR( 'zhongguo' , 'zhong' , 2 , 1 ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'uo' , 1 , 1 ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'o' , 1 , 1 ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'g' , 1 , 1 ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'g' , 6 , 1 ) AS TESTINSTR1 FROM TABLE
SELECT INSTR( 'zhongguo' , 'g' , 6 , 2 ) AS TESTINSTR1 FROM TABLE
从上面可以看出- startNum- 表示从主字符串的哪一位开始查找,- appearTime- 表示了第几次出现的下标
从上面的案例里面可以看出-INSTR-可以做到与-LIKE-同一种效果的模糊查询,最近根据项目功能写了点模糊查询的sql
sql示例and查询条件
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进行模糊查询