ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 无聊写的简单用PLSQL分割字符串的脚本

无聊写的简单用PLSQL分割字符串的脚本

原创 Linux操作系统 作者:abstractcyj 时间:2013-10-23 10:16:57 0 删除 编辑
DECLARE
  v_str    VARCHAR2(4000) := 'aa,bb,cc,dd,ee,';
  v_length PLS_INTEGER;
  TYPE typ_str_tab IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER;
  v_str_arr    typ_str_tab;
  j            PLS_INTEGER := 0;
  v_cnt        PLS_INTEGER := 0;
  v_str_length PLS_INTEGER;
BEGIN
  v_length     := regexp_count(v_str, ',') + 1;
  v_str_length := length(v_str);

  FOR i IN 1 .. length(v_str) LOOP
    IF substr(v_str, i, 1) = ',' THEN
      IF j = 0 THEN
        v_cnt := v_cnt + 1;
        v_str_arr(v_cnt) := substr(v_str, j, i - 1);
        j := i;
      ELSE
        v_cnt := v_cnt + 1;
        v_str_arr(v_cnt) := substr(v_str, j + 1, i - j - 1);
        j := i;
      END IF;
    
    END IF;
    --最后一个字符处理较为特殊
    IF i = v_str_length THEN
      v_str_arr(v_cnt + 1) := substr(v_str, j + 1, i - j);
    END IF;
  
  END LOOP;
  dbms_output.put_line('xx = ' ||
                       regexp_instr(v_str, ',', 1, v_length - 1));
  dbms_output.put_line(v_str_arr.count);

  FOR z IN 1 .. v_str_arr.count LOOP
    dbms_output.put_line(v_str_arr(z));
  END LOOP;
END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8520577/viewspace-774852/,如需转载,请注明出处,否则将追究法律责任。

上一篇: DBMS_SQL例子
请登录后发表评论 登录
全部评论
曾从事java方向开发多年。近年已经转入数据库方向。主要擅长SQL优化,Oracle数据库问题诊断,Oracle备份与恢复等。服务于医药物流,医院等行业

注册时间:2010-01-26

  • 博文量
    559
  • 访问量
    854753