ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实现split功能

oracle实现split功能

原创 Linux操作系统 作者:yuanyongbin 时间:2011-11-24 19:50:39 0 删除 编辑
同事今天拿了一批数据给我,说是要导进数据库做分析用,因为这类事经常做,所以我很爽快的答应。。。但当我看到数据的时候有点小诧异,共分析的字段,核心数据都的用逗号隔开的,要把这些数据split后才能做分析,简单的sql我没想到怎么去实现,有方法的大神们提供指教下哦,我就写了个小函数去实现这个功能,下面简单的演示一下这个函数:

create or replace type str_array
is
table of varchar2 (4000);
/
 
#建立函数
create or replace function pipetest(
       p_string in varchar2,
       p_delimiter in varchar2
)
return str_array pipelined
as
  v_length number := length(p_string);
  v_start number := 1;
  v_index number;
begin
  while(v_start<=v_length)
  loop
       v_index := instr(p_string,p_delimiter,v_start);
       if v_index=0 then
          pipe row(substr(p_string,v_start));
          v_start := v_length+1;
       else
          pipe row(substr(p_string,v_start,v_index-v_start));
          v_start := v_index+1;
       end if;
  end loop;
  return;
end pipetest;
/
 
#测试数据
SQL> select * from table(pipetest('305190,305186',','));
COLUMN_VALUE
--------------------------------------------------------------------------------
305190
305186
可以看到,通过这个函数,讲逗号分割的数据拆开了,而且通过管道的功能,讲数据以表的形式存放了,这样也方便了后续的分析,直接参照表与表的关联方式去关联就行了。。。。

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

下一篇: 发个牢骚
请登录后发表评论 登录
全部评论

注册时间:2011-11-21

  • 博文量
    15
  • 访问量
    31182