2014-01-13 15 views
0

來自某列的輸出就像這個'Arpit-Bansal-Doctor-ALC FU JP-111DC'。我想要提取的數據介於- -之間,例如Bansal子串函數

請諮詢哪個功能使用以及如何使用。

+1

而爲什麼不「博士」?或「班薩爾醫生」? –

+0

或者爲什麼不''ALC FU JP' –

+0

您是否說列值是由連字符分隔的5個值的連接,即'Arpit','Bansal','Doctor','ALC FU JP','111DC',並且你想獲得第二個值? –

回答

1

您可以使用內置的功能INSTRSUBSTR這樣做:

select substr(col,instr(col,'-')+1,instr(col,'-',1,2)-instr(col,'-')-1) 
from (select 'Arpit-Bansal-Doctor-ALC FU JP-111DC' col from dual); 

InStr函數調用用於查找第一個和第二個連字符,然後SUBSTR用於獲取字符串它們之間。

這是很麻煩的,所以如果你想所有5個值分離出來,你在PL/SQL,您可以使用apex_util.string_to_table將它們分開:

declare 
    array apex_application_global.vc_arr2; 
begin 
    array := apex_util.string_to_table ('Arpit-Bansal-Doctor-ALC FU JP-111DC', '-'); 
    for i in 1..array.count loop 
     dbms_output.put_Line ('Part' || i || ' is '||array(i)); 
    end loop; 
end; 
+0

謝謝All和@tony andrews,解決了我的問題。 – user2106410

0

另一種方法:

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+') 
from dual; 

Arpit 

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 2) 
from dual; 

Bansal 

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 3) 
from dual; 

Doctor 

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 4) 
from dual; 

ALC FU JP