Oracle中instr函数使用方法
在Oracle中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)
INSTR方法的格式为
INSTR(src, subStr,startIndex, count)
src: 源字符串
subStr : 要查找的子串
startIndex : 从第几个字符开始,负数表示从右往左查找。(此参数可选,默认为1)
count: 要找到第几个匹配的序号。(此参数可选,默认为1)
返回值: 子串在字符串中的位置,第1个为1;不存在为0。(特别注意:如果src为空字符串,返回值为null)。
INSTR(src, subStr,startIndex, count)
src: 源字符串
subStr : 要查找的子串
startIndex : 从第几个字符开始,负数表示从右往左查找。(此参数可选,默认为1)
count: 要找到第几个匹配的序号。(此参数可选,默认为1)
返回值: 子串在字符串中的位置,第1个为1;不存在为0。(特别注意:如果src为空字符串,返回值为null)。
举例:
scenarioinfo 中有60条数据,其中字段ywwd不为空的有40条(其中包含“积分”的有30条),字段ywwd为空的有20条。
查询scenarioinfo 表中字段ywwd包含“积分”的语句(返回30条数据):
select id, ywwd from scenarioinfo where instr(ywwd,'积分',1,1) > 0;
查询scenarioinfo 表中字段ywwd不包含“积分”的语句(这里返回的结果集中不包含ywwd字段为null的结果,返回10条数据):
select id, ywwd from scenarioinfo where instr(ywwd,'积分',1,1) = 0;
如果想返回的结果集中包含ywwd字段为null的,可以这样写(返回30条数据):
select id, ywwd from scenarioinfo where instr(ywwd,'积分',1,1) = 0 and ywwd is null;