oracle中的split

第一步:

  create or replace type type_str is table of varchar2(100); 

第二步:

  create or replace function split(p_str varchar2,p_delimiter varchar2 default ',')

  return type_str

  IS
    rs type_str := type_str();
    l_str varchar2(4000) := '';
    l_len number := 0;
  begin
    l_str := p_str;
    l_len := length(p_delimiter);
    while length(l_str) > 0 loop
     if instr(l_str,p_delimiter)>0 then
      rs.extend;
      rs(rs.count) := substr(l_str,1,instr(l_str,p_delimiter) - 1);
      l_str := substr(l_str,instr(l_str,p_delimiter)+l_len);
     else
      rs.extend;

      rs(rs.count) := l_str;
      exit;
     end if;
    end loop;
    return rs;
  end;

第三步:

  select column_value from table(split('aaa,bbb,ccc',',');

posted @ 2020-07-14 15:46  忆殇314  阅读(853)  评论(0编辑  收藏  举报