oracle自定义自带split函数,oracle实现split功能

同事今天拿了一批数据给我,说是要导进数据库做分析用,因为这类事经常做,所以我很爽快的答应。。。但当我看到数据的时候有点小诧异,共分析的字段,核心数据都的用逗号隔开的,要把这些数据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

可以看到,通过这个函数,讲逗号分割的数据拆开了,而且通过管道的功能,讲数据以表的形式存放了,这样也方便了后续的分析,直接参照表与表的关联方式去关联就行了。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值