pl/sqlプログラミングJavaにおけるStringに類似したsplit関数機能を実現
1651 ワード
pl/sqlプログラミングJavaにおけるStringに類似したsplit関数機能を実現
ただ、JavaのStringのsplit関数の機能は強くなく、文字列を指定した区切り記号で切り取り、配列を返す簡単なアプリケーションを満たすだけです.
コードは次のとおりです.
ただ、JavaのStringのsplit関数の機能は強くなく、文字列を指定した区切り記号で切り取り、配列を返す簡単なアプリケーションを満たすだけです.
コードは次のとおりです.
-- T_CHAR
create type ty_str_split as table of varchar2(100);
/**
* :str_split
* :p_str ( : )
* p_delim
* : T_CHAR ,
* : JS split
*/
function str_split (p_str in varchar2
,p_delim in varchar2 default ',')
return T_CHAR as
v_str varchar2(32767);
v_fields pls_integer;
v_substr varchar2(32767);
v_return T_CHAR;
begin
v_str := p_delim||trim(p_delim from p_str)||p_delim;
v_fields := length(v_str) - length(replace(v_str,p_delim,'')) - 1;
for i in 1..v_fields loop
v_substr := substr(v_str
,instr(v_str,p_delim,1,i)+1
,instr(v_str,p_delim,1,i+1) - instr(v_str,p_delim,1,i) -1);
v_return(i) := v_substr;
end loop;
return v_return;
end;
create or replace procedure test1 as
v_array T_CHAR;
begin
v_array:=str_split('1a,2b,3c,4d',',');
for i in 1..v_array.count loop
dbms_output.put_line('v_array('||i||')='||v_array(i));
end loop;
end test1;