orcal 分割字符串(JAVA中Split方法)

近日在写存储过程的时候需要用到分割字符串并返回一串数组,网上百度了一大堆,发现要不是错误的,要不就是需求不对,因此干脆自己写一个类似Java里面的split的方法好了。
下面定义一个函数返回的是一个number型数组,第一个参数是你的字符串,第二个是你要分割的字符

function splitString(
     p_list varchar2,
     p_sep varchar2
  ) return DEF_PKG.arr_table
  is
  v_table DEF_PKG.arr_table;
  l_idx pls_integer;
  v_list varchar2(50) := p_list;
  v_str varchar2(20);
  vcount int:=0;
  begin
    SELECT LENGTH(REGEXP_REPLACE(v_list, p_sep )) COUNT into vcount FROM DUAL;
     for i in 1 .. vcount loop
     l_idx := instr(v_list,p_sep);--出现的位数
     if l_idx = 0 then
         v_table(i):= to_number(v_list,'0');
         exit;
     end if;
     v_str:=substr(v_list,0,l_idx-1);--截取出的字符
     v_list := substr(v_list,l_idx+length(p_sep));--仍要继续截取的
     v_table(i):=to_number(v_str,0);
    end loop;
    return v_table;
  end splitString;```



贴出DEF_PKG.arr_table的定义:
type arr_table is table of number index by binary_integer;

如果对数组定义不太清楚的可以百度下查找相关定义

通过declare下面测试下

 declare 
  v_table DEF_PKG.arr_table;
  begin
   v_table:= common_tools.splitString('1;2;3;',';');
   for i in 1 .. v_table.count --循环数组
     loop 
       dbms_output.put_line('111:'||v_table(i));
     end loop;
   end ;

结果:
111:1
111:2
111:3

以上如有错误欢迎各位博友指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值