oracle中字符串拆字符,oracle拆分字符串

create or replace type array_string is table of varchar2(2000);

/

create or replace function f_split_string

-- 拆分字符串

---- author: zhaohuihua

(

i_src in varchar2, -- 待拆分的字符串

i_flg in varchar2 -- 分割符

) return array_string -- 拆分后的字符串数组

as

v_ary array_string; -- 数组, 返回结果

v_sub varchar2(5000); -- 子字符串

v_len integer; -- 分割符的长度

v_idx integer; -- 分割符的位置

v_nxt integer; -- 分割符的下一个位置

begin

if i_src is null then

return null;

end if;

-- 初始化变量

v_ary := array_string();

v_len := length(i_flg);

v_idx := 1;

while v_idx <> -1 loop

-- 获取分割符的位置

v_nxt := instr(i_src, i_flg, v_idx);

if v_nxt = 0 then -- 不存在分割符, 即最后1个子字符串

v_sub := substr(i_src, v_idx);

v_idx := -1;

else -- 否则拆分

v_sub := substr(i_src, v_idx, v_nxt - v_idx);

v_idx := v_nxt + v_len;

end if;

-- 子字符串记录到数组

v_ary.extend;

v_ary(v_ary.count) := v_sub;

-- dbms_output.put_line(v_sub);

end loop;

return v_ary;

Exception

when others then

-- dbms_output.put_line(sqlcode||': '||sqlerrm);

return null;

end f_split_string;

/

调用示例

declare

v_array array_string; -- 拆分后的列表

begin

v_array := f_split_string('zhaohuihua|zhaohuihua@126.com|www.csdn.net', '|');

for i in 1 .. v_array.count loop

dbms_output.put_line(v_array(i));

end loop;

exception

when others then

dbms_output.put_line(sqlcode||': '||sqlerrm);

end;

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值