ORACLE中的查询实现,列A和列B ,A列中的值是1,B列中的值是4,5,6,我想实现以下的查询效果。

A B1 4,5,6 ↓A B1 41 51 6 求大神们指教一下
2024-11-07 20:46:22
推荐回答(1个)
回答(1):

create or replace function strsplit(p_value varchar2,
p_split varchar2 := ',')
--usage: select * from table(strsplit('1,2,3,4,5'))
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 strsplit;

usage: select * from table(strsplit('1,2,3,4,5'))