substr 函數:截取字元串
文法:substr(string,start, [length])
string:表示源字元串,即要截取的字元串。
start:開始位置,從1開始查找。如果start是負數,則從string字元串末尾開始算,然後往後截取字元串。
length:可選,如果不填,則從start截取到最後一個字元
select substr('123456',1) from dual --輸出為123456
select substr('123456',-3,3) from dual --輸出為456
instr 函數:傳回子字元串在源字元串中的位置
文法:INSTR(string,child_string,[start],[show_time])
string:表示源字元串。
child_string:子字元串,即要查找的字元串。
start:可選,開始位置,預設從1開始。如果為負數,則從右向左檢索。
show_time:可選,表示子字元串第幾次出現在源字元串當中,預設第1次,負數則報錯。
--表示從源字元串'city_company_staff'中第1個字元開始查找子字元串'_'第1次出現的位置
SELECT INSTR('city_company_staff', '_') FROM dual --傳回5
--表示從源字元串'city_company_staff'中第5個字元開始查找子字元串'_'第1次出現的位置
SELECT INSTR('city_company_staff', '_', 5) FROM dual --傳回5
--表示從源字元串'city_company_staff'中第5個字元開始查找子字元串'_'第1次出現的位置
SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual --傳回5
--表示從源字元串'city_company_staff'中第3個字元開始查找子字元串'_'第2次出現的位置
SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual --傳回13
--start參數為-1,從右向左檢索,查找'_'字元串在源字元串中第1次出現的位置
SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual --傳回13
--start參數為-6,從右向左檢索,查找'_'字元串在源字元串中第2次出現的位置
SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual --傳回5