先简单介绍下:instr()的作用其实类似于我们常用的Like,只不过多了一些自己的独特的用处:解决我们查询字符串位置的问题

-- 利用下表判断字符串中是否存在某个字符

select instr('ABCD', 'B') from dual where instr('ABCD', 'B') > 0

其实这个SQL就是利用instr()函数的查询字符串所处的位置功能来判断是否含有某个字符进而起到类似like的效果。

instr()其他写法:

-- 获取一个字符串中第几次出现某个字符的位置(从1开始)

select instr('ABCBD', 'B', 1, 2) from dual

-- 执行的结果是4

select instr('ABCBD', 'B', 1, 1) from dual

-- 执行的结果是2

select instr('ABCBD', 'B', 1) from dual

-- 执行的结果是2

select instr('ABCBD', 'B', 3) from dual

-- 执行的结果是4

写法解析:instr(‘源字符串’, '待匹配的字符串',从第几位字符开始匹配(取值范围≠0) , 第几次匹配)

注意:需要强调的是从第几位开始匹配的正确赋值应该是≠1,如果取值是负值则是倒着匹配,但是结果还是正着从1开始的位置,不会因为正着或者倒着匹配而改变位置序号。并且从上面的SQL可以看出instr从头到尾只执行一次

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: