今天有個同學問我這個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
——————
1
這個最巧妙的我感覺還是用在有幾個固定值的order by中
eg:order by instr("1,0,-1,2,8,9",mark,1,1)是不是感覺很方便。
希望可以幫到大家
引用原文:http://blog.csdn.net/q1059081877q/article/details/47091619
寫博客是為了記住自己容易忘記的東西,另外也是對自己工作的總結,文章可以轉載,無需版權。希望盡自己的努力,做到更好,大家一起努力進步!
如果有什么問題,歡迎大家一起探討,代碼如有問題,歡迎各位大神指正!
