|
我自己写了个函数,
第一个参数是源字符串,第二个参数是分隔符, 第三个参数是取第几个列.
FUNCTION get_deli_str_col(ps_str in varchar2, ps_del in varchar2, pn_col_num in number) return varchar2
is
vs_str varchar2(32000) ;
vs_ret_val varchar2(32000) ;
i number := pn_col_num ;
vn_deli_len number(20) := lengthb(ps_del) ;
begin
vs_str := ps_str ;
if substr(vs_str,-vn_deli_len,vn_deli_len) <> ps_del then
vs_str := vs_str ||ps_del ;
end if;
if i = 1 then
vs_ret_val := substr(vs_str, 1, instr(vs_str,ps_del ,1,1)-1 );
else
vs_ret_val := substr(vs_str, instr(vs_str,ps_del ,1,i-1)+ vn_deli_len, instr(vs_str,ps_del ,1,i) - instr(vs_str,ps_del,1,i-1)-vn_deli_len) ;
end if ;
vs_ret_val := rtrim(vs_ret_val,chr(10));
vs_ret_val := rtrim(vs_ret_val,chr(13));
vs_ret_val := trim(vs_ret_val);
return vs_ret_val;
END get_deli_str_col ; |
|