背景
公司用的就是Oracle,我一点底子都没有,每天就是瞎搞,现在持续更新学到的Oracle函数
Oracle自带函数
instr函数
instr函数有两种用法
instr(string1, string2)
instr(string1, string2, start, 第N次)
instr函数第一种形式
instr(string1, string2)是在string1中寻找第一次出现string2的位置,返回它第一次出现的索引(从1开始,而不是0),假如不存在就返回-1,所以有个小技巧:
Oracle的模糊查询
字段名 like '%a%'
这种模糊查询,不能使用索引,所以效率很慢,推荐使用如下
instr(字段名, '你要找的子字符串') > 0
这个的效果和模糊匹配一样,因为只要<0就是没有包含该字符串,>0就是有,可以达到统一的效果,而且效率更高!
instr函数第二种形式
instr(string1, string2, start, 第N次) 是在string1中从索引start开始寻找第N次出现string2的位置,返回它第一次出现的索引(从1开始,而不是0),假如不存在就返回-1
注意:这里的start参数
-x:代表从倒数第x个位置的字符开始匹配,从后向前找
x:代表从第x个位置的字符开始匹配,从前向后找
nvl函数
nvl(expr1, expr2)
如果expr1存在,即不为空,则使用expr1,否则使用expr2。可以拿来做空值替代。