欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

类似于split的作用 将字符串, 分隔开成字符数组

程序员文章站 2022-06-12 19:31:21
...

也是从一个开源的软件中看到的 就冒昧的拿了出来 PL/SQL split procedure comma_to_arr(list in varchar2, arr out col_head_arr, lenarr out integer) is type col_head_arr is table of varchar2(50) index by binary_integer; l_arr col_head_arr;--字符数

也是从一个开源的软件中看到的 就冒昧的拿了出来

PL/SQL split
 procedure comma_to_arr(list   in varchar2,
                         arr    out col_head_arr,
                         lenarr out integer) is
    type col_head_arr is table of varchar2(50) index by binary_integer;
    l_arr       col_head_arr;--字符数组
    i           integer;--
    str_start   integer;
    arr_counter integer;
  begin
    -- first check if it is null
    --如果为空 就直接返回空的数组 ,标记长度为0
    if length(list) = 0 then
      arr    := l_arr;
      lenarr := 0;
      return;
    end if;
  
    i           := 1;
    str_start   := 1;
    arr_counter := 0;
    --循环条件 字符扫描位置小于字符长度+1
    while i  length(list) or substr(list, i, 1) = ',' then
        --要数组长度递增
        arr_counter := arr_counter + 1;
        --将 浮标位置开始 以及到 ,之间的 字符保存
        l_arr(arr_counter) := substr(list, str_start, i - str_start);
        --将浮标 设定为,后的下一个字符 
        str_start := i + 1;
      end if;
      --移动 字符扫描位置
      i := i + 1;
    end loop;
    arr    := l_arr;
    lenarr := arr_counter;
  end;