在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;