2015-04-28 34 views

回答

1

您可以通過OCCURENCES regexp_substr迭代,或只選擇他們喜歡這個

for item in (SELECT regexp_substr('1200-abc,1300,1400-enhk1,1500', '\w(\d+)\w', 1, LEVEL) val 
     FROM dual 
    CONNECT BY regexp_substr('1200-abc,1300,1400-enhk1,1500', '\w(\d+)\w', 1, LEVEL) IS NOT NULL) 
loop 
     dbms_output.put_line(item.val); 
end loop; 
0

你可以這樣:

declare 

    i varchar2(4000); 
    v_array apex_application_global.vc_arr2; 
    only_numbers varchar2(100) :=''; 
begin 

    i := '1200-abc,1300,1400-enhk1,1500'; 

    v_array := apex_util.string_to_table(i, ','); 

    for e in 1 .. v_array.count loop 

     only_numbers:=only_numbers || regexp_substr(v_array(e),'[[:digit:]]*') ||','; 


    end loop; 

only_numbers := rtrim(only_numbers, ','); 
dbms_output.put_line(only_numbers); -- output : 1200,1300,1400,1500 

end; 
+0

感謝所有的回覆 – user3393023

0
create function del_non_numerics(str varchar2) 
return varchar2 
is 
v_return_txt varchar2(3000); 
begin 
select regexp_replace(str,'[^0-9,]+','') into v_return_txt 
from dual; 

return v_return_txt; 
end; 
/

調用上述代碼作爲 del_non_numerics( '1200-ABC,1300,1400-enhkl,1500')=> 1200,1300,1400,1500