1. 程式人生 > >oracle中INSTR函式的用法

oracle中INSTR函式的用法

今天有個同學問我這個INSTR函式,我也不太清楚就上網查了查做一個小小的記錄吧大笑

INSTR(C1,C2,I,J) 在一個字串中搜索指定的字元,返回發現指定的字元的位置C1 被搜尋的字串 C2 希望搜尋的字串 搜尋的開始位置,預設為出現的位置,預設為SQL> select instr(oracle traning,ra,1,2) instring from dual; INSTRING --------- 

他的位置搜尋是從1開始的也就是說o的位置是1,這點要分清楚。


INSTR方法的格式為
INSTR(源字串, 要查詢的字串, 從第幾個字元開始, 要找到第幾個匹配的序號)
返回找到的位置,如果找不到則返回0.
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字串為'CORPORATE FLOOR', 在字串中查詢'OR',從第三個字元位置開始查詢"OR",取第三個字後第2個匹配項的位置。

預設查詢順序為從左到右。當起始位置為負數的時候,從右邊開始查詢。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "aaa" FROM DUAL的顯示結果是

Instring
——————
14


oracle的substr函式的用法:
 取得字串中指定起始位置和長度的字串   substr( string, start_position, [ length ] )
 如:
     substr('This is a test', 6, 2)     would return 'is'
     substr('This is a test', 6)     would return 'is a test'
     substr('TechOnTheNet', -3, 3)     would return 'Net'
     substr('TechOnTheNet', -6, 3)     would return 'The'
 
select substr('Thisisatest', -4, 2) value from dual

這個最巧妙的我感覺還是用在有幾個固定值的order by中

eg:order by instr("1,0,-1,2,8,9",mark,1,1)是不是感覺很方便。

希望可以幫到大家大笑