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
搞定