如题所述
第1个回答 2022-11-16
create or replace type type_split as table of varchar2(50); --创建一个 type ,如果为了使split函数具有通用性,请将其size 设大些。\x0d\x0a\x0d\x0a--创建function\x0d\x0acreate or replace function split\x0d\x0a(\x0d\x0a p_list varchar2,\x0d\x0a p_sep varchar2 := ','\x0d\x0a) return type_split pipelined\x0d\x0a is\x0d\x0a l_idx pls_integer;\x0d\x0a v_list varchar2(50) := p_list;\x0d\x0abegin\x0d\x0a loop\x0d\x0a l_idx := instr(v_list,p_sep);\x0d\x0a if l_idx > 0 then\x0d\x0a pipe row(substr(v_list,1,l_idx-1));\x0d\x0a v_list := substr(v_list,l_idx+length(p_sep));\x0d\x0a else\x0d\x0a pipe row(v_list);\x0d\x0a exit;\x0d\x0a end if;\x0d\x0a end loop;\x0d\x0a return;\x0d\x0aend split;\x0d\x0a\x0d\x0a使用:\x0d\x0a select * from table(split('1,2,3,4,5,6,7,8'\x0d\x0a,','));\x0d\x0a然后就可以通过“,”来分割数字了