oracle中INSTR函式的用法
INSTR(C1,C2,I,J) 在一個字串中搜索指定的字元,返回發現指定的字元的位置; C1 被搜尋的字串 C2 希望搜尋的字串 I 搜尋的開始位置,預設為1 J 出現的位置,預設為1 SQL> select instr(oracle traning,ra,1,2) instring from dual; INSTRING --------- 9
他的位置搜尋是從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)是不是感覺很方便。
希望可以幫到大家