oracle split 字符分割函数

oracle本身没有字符分割函数,一个字符串分割后,要以一个结果集的方式存放,所以需要配合table一起用,分割后的字符串是一个数组,在oracle中,可以先按如下,创建一个类型,该类型就是split里要返回的类型,如下:

create or replace type strsplit_type as table of varchar2(500);


创建好类型了,下面是split函数的实现,引用到上面的类型.

create or replace function str_split(p_value varchar2,
p_split varchar2 := ',')

return strsplit_type
pipelined is
v_idx integer;
v_str varchar2(500);
v_strs_last varchar2(4000) := p_value;

begin
loop
v_idx := instr(v_strs_last, p_split);
exit when v_idx = 0;
v_str := substr(v_strs_last, 1, v_idx - 1);
v_strs_last := substr(v_strs_last, v_idx + 1);
pipe row(v_str);
end loop;
pipe row(v_strs_last);
return;

end str_split;


查询测试一下:
select distinct a.* from table(str_split('PROVINCE_DCG,PROVINCE_SA,PROVINCE_AN,PROVINCE')) a
.
返回结果:

1 PROVINCE_DCG
2 PROVINCE_SA
3 PROVINCE_AN
4 PROVINCE

搞定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值