天天看點

oracle字元串截取方法

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