日期:2014-05-17  浏览次数:20978 次

求一个sql函数
把传入的值每隔三位进行截取,最后不足三位的则去掉拼成路径。
比如传入aa3dbba7b781cc744f22a6992c4d800w,最后得到\d80\2c4\699\22a\44f\cc7\781\a7b\dbb\aa3.多谢!


------解决方案--------------------
create function f_csdn_test1
(
i_str varchar2
)
return varchar2
as
v_len integer;
v_str varchar2(200);
v_path varchar2(200);
v_err exception;
begin
if instr(i_str, '\ ') > 0 then
raise v_err;
end if;
v_str := trim(i_str);
v_len := length(v_str);
while v_len > = 3 loop
v_path := v_path|| '\ '||substr(v_str,-3,3);
v_str := substr(v_str,1,v_len-3);
v_len := length(v_str);
end loop;

return v_path;
exception
when v_err then
return 'invalid character! ';
when others then
return substr(SQLERRM,1,200);
end;