insracle()in oracle 11g

时间:2016-02-08 08:23:35

标签: oracle oracle11g

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

但是在这里,在正方向搜索时它会忽略部分模式匹配并给出精确模式匹配的位置。任何人都可以向我解释它吗?为什么这个双重标准呢?

1 个答案:

答案 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)