PLSQL分字符串转数组

以下是个笨办法将字符串转数组。

DECLARE
  l_var_temp        VARCHAR2(1000);
  l_split_char      VARCHAR2(10) := ',';
  l_invoice_id      NUMBER;
  p_invoice_id_list VARCHAR2(3000) := ',12,31412,3,,';
  n_length          NUMBER := lengthb(p_invoice_id_list);
  TYPE type_invoice_id_list IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  l_invoice_id_list type_invoice_id_list;
BEGIN

  l_var_temp := p_invoice_id_list;
  l_invoice_id_list.delete;
  WHILE instr(l_var_temp, l_split_char) > 0 LOOP
  
    l_invoice_id := substrb(l_var_temp
                           ,1
                           ,instrb(l_var_temp, l_split_char) - 1);
  
    -- 每取完字符串里的分隔的字符,该字符将从原始字符串中剔除
    l_var_temp := substrb(l_var_temp, instrb(l_var_temp, l_split_char) + 1);
  
    IF l_invoice_id IS NOT NULL THEN
      l_invoice_id_list(l_invoice_id_list.count) := l_invoice_id;
    END IF;
  END LOOP;

  IF lengthb(l_var_temp) > 0 THEN
    l_invoice_id_list(l_invoice_id_list.count) := l_var_temp;
  END IF;

  dbms_output.put_line('l_invoice_id_list.count = ' ||
                       l_invoice_id_list.count);
  FOR i IN 1 .. l_invoice_id_list.count LOOP
    dbms_output.put_line(l_invoice_id_list(i - 1));
  END LOOP;
END;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值