1. 程式人生 > >oracle的instr()函數

oracle的instr()函數

單個字符 很多 bsp 但是 sta 沒有 都是 start HERE

我們知道很多語言都提供了indexOf()和lastIndexOf()函數,以便能查找某個字符在某個字符串中的出現的位置和最後一次出現的位置。

但是Oracle沒有提供這兩個函數,事實上,它提供了一個INSTR()函數,這個函數其實功能要強大得多。

INSTR()函數的語法:

-- instr(源字符串, 目標字符串 [, 起始位置 [, 匹配序號]])
instr(str1, str2 [, start_position [, nth_appearance]]) 

沒有錯,它可以用來查字符串的,不是單單查單個字符。

SELECT INSTR(HELLOWORLD, 
L) FROM DUAL; -- 3 默認第一次出現L的位置 SELECT INSTR(HELLOWORLD, LO) FROM DUAL; -- 4 在LO中的L開始出現的位置 SELECT INSTR(HELLOWORLD, WO) FROM DUAL; -- 6 在WO中的W開始出現的位置 SELECT INSTR(HELLOWORLD, L, 2, 2) FROM DUAL; -- 4 在HELLOWORLD的第2(E)號位置開始,查找第二次出現的L的位置 SELECT INSTR(HELLOWORLD, L, 3, 2) FROM DUAL; --
4 在HELLOWORLD的第3(L)號位置開始,查找第二次出現的L的位置 SELECT INSTR(HELLOWORLD, L, 4, 2) FROM DUAL; -- 9 在HELLOWORLD的第4(L)號位置開始,查找第二次出現的L的位置 SELECT INSTR(HELLOWORLD, L, -1, 1) FROM DUAL; -- 9 在HELLOWORLD的倒數第1(D)號位置開始,往回查找第一次出現的L的位置 SELECT INSTR(HELLOWORLD, L, -2, 2) FROM DUAL; -- 4 在HELLOWORLD的倒數第1(D)號位置開始,往回查找第二次出現的L的位置
SELECT INSTR(HELLOWORLD, L, 2, 3) FROM DUAL; -- 9 在HELLOWORLD的第2(E)號位置開始,查找第三次出現的L的位置 SELECT INSTR(HELLOWORLD, L, -2, 3) FROM DUAL; -- 3 在HELLOWORLD的倒數第2(L)號位置開始,往回查找第三次出現的L的位置

INSTR()函數有時候也可以用來替代模糊查詢。

SELECT * FROM TABLE WHERE NAME LIKE %HELLOWORLD%;
SELECT * FROM TABLE WHERE INSTR(NAME, HELLOWORLD) > 0;

這兩個語句的實現效果是一樣的。

多用用,你就能感受到這個函數的強大,那些什麽indexOf()或lastIndexOf()都是弟弟。

"為誰如花美眷,似水流年。"

oracle的instr()函數