ORACLE 分割字符函数

2016年7月14日 1359点热度 0人点赞 0条评论

20160714100437

做报表的时候因为数据存的是这样格式,所以写一个函数匹配成中文的

下面是执行步骤
第一步
CREATE OR REPLACE type mytype as table of varchar2(4000);

第二步
create or replace  FUNCTION  my_split(piv_str in varchar2, piv_delimiter in varchar2)
  --piv_str 为字符串,piv_delimiter 为分隔符
  return mytype is
  j        number := 0;
  i        number := 1;
  len      number := 0;
  len1     number := 0;
  str      varchar2(4000);
  my_split mytype := mytype();
begin
  len  := length(piv_str);
  len1 := length(piv_delimiter);
  while j < len loop
    j := instr(piv_str, piv_delimiter, i);
    if j = 0 then
      j   := len;
      str := substr(piv_str, i);
      my_split.extend;
      my_split(my_split.count) := str;
      if i >= len then
        exit;
      end if;
    else
      str := substr(piv_str, i, j - i);
      i   := j + len1;
      my_split.extend;
      my_split(my_split.count) := str;
    end if;
  end loop;
  return my_split;
end my_split;

第三步
create or replace FUNCTION get_accord(params    in varchar2, 
                                      delimiter in varchar2 )
  return varchar2 is
  result_str varchar2(2000); 
  str_list   varchar2(4000);
begin
  for rec_tmp in (select column_value
                    from table(my_split(params, delimiter))) loop
    select a.name_
      INTO result_str
      from HR_POST_NUM_TYPE a
     where a.id_ = rec_tmp.column_value;
    str_list := str_list || to_char(result_str);
  end loop;
  return str_list;
end get_accord;

 

旧日光影

文章评论

您需要 登录 之后才可以评论