oracle 如何擷取兩個"-"之間的字串
阿新 • • 發佈:2019-01-01
奧迪-A5-Coupe Qu-2.0T-7檔自動-兩門四驅-西拉紅-深內飾
比如這樣的一串字元,我如何截取出"西拉紅"這3個字
比如這樣的一串字元,我如何截取出"西拉紅"這3個字
select substr('123-asdf-119',instr('123-asdf-119','-')+1,instr('123-asdf-119','-',instr('123-asdf-119','-')+1)-instr('123-asdf-119','-')-1) from dual;
12068
可以使用substr函式及instr函式共同實現:
如,字串為:123-asdf-119
現在要擷取兩個“-”中間的字串,可用如下語句:
select substr( '123-asdf-119' ,instr( '123-asdf-119' , '-' )+1,instr( '123-asdf-119' , '-' ,instr( '123-asdf-119' , '-' )+1)-instr( '123-asdf-119' , '-' )-1) from dual;
|
查詢結果:
instr函式:
語法如下:
instr( string1, string2, start_position,nth_appearance )
substr函式:
substr(string,start,length)
string - 指定的要擷取的字串
start - 必需,規定在字串的何處開始
正數 - 在字串的指定位置開始
負數 - 在從字串結尾的指定位置開始
0 - 在字串中的第一個字元處開始
length - 可選,指定要擷取的字串長度,預設時返回字元表示式的值結束前的全部字元。
SELECT REGEXP_SUBSTR('奧迪-A5-Coupe Qu-2.0T-7檔自動-兩門四驅-西拉紅-深內飾', '[^-]+', 1, LEVEL, 'i') AS STR
FROM DUAL
CONNECT BY LEVEL <=
LENGTH('奧迪-A5-Coupe Qu-2.0T-7檔自動-兩門四驅-西拉紅-深內飾') - LENGTH(REGEXP_REPLACE('奧迪-A5-Coupe Qu-2.0T-7檔自動-兩門四驅-西拉紅-深內飾', '-', ''))+1;