SQL> select instr('stringrings','rin',-4,1) from dual;
INSTR('STRINGRINGS','RIN',-4,1)
-------------------------------
7
当我将搜索位置设为-4并且它从右向左搜索时,它将匹配位置返回为7,尽管整个模式与给定的搜索起始位置不匹配。这里只有部分模式匹配原始字符串。
SQL> select instr('stringrings','rin',-5,1) from dual;
INSTR('STRINGRINGS','RIN',-5,1)
-------------------------------
7
这里也有同样的结果......
SQL> select instr('stringrings','rin',4,1) from dual;
INSTR('STRINGRINGS','RIN',4,1)
------------------------------
7
但是在这里,在正方向搜索时它会忽略部分模式匹配并给出精确模式匹配的位置。任何人都可以向我解释它吗?为什么这个双重标准呢?
答案 0 :(得分:2)
没有双重标准:
select instr('stringrings','rin',-4,1) from dual;
INSTR从字符串 i ngs(-4)开始搜索,向后搜索直到第一个 rin = string rin gs(7)
select instr('stringrings','rin',-5,1) from dual;
INSTR从字符串 r ings(-5)开始搜索,向后搜索直到第一个 rin = string rin gs(7)
select instr('stringrings','rin',4,1) from dual;
INSTR从str i ngrings(4)开始搜索,向前搜索直到第一个 rin = string rin gs(7)