안녕하세요
잘 풀리지 않아 질문드립니다.
제가 하고 싶은건 아래와 같이
table name: TB_JOB
code str
AB00001 ABC,DEF
AB00023 ABC,DEF
AC09834 DEF,GHI
AD98340 ABC,GHI
있을때
AB00001 ABC
AB00023 ABC
AD98340 ABC
AB00001 DEF
AB00023 DEF
AC09834 DEF
AC09834 GHI
AD98340 GHI
와 같이 하고 싶습니다.
우선 제가 찾은건 type과 fuction를 만들어서 분리 하는건 찾았는데
응용해봐도 잘 안되네요.
------------------------------------------------------------------------------------------------------------------------
create or replace type split_tbl as table ofvarchar2(32767);
create or replace function split
(
p_list varchar2,
p_del varchar2 := ','
) return split_tbl pipelined
is
l_idx pls_integer;
l_list varchar2(32767):= p_list;
AA
l_value varchar2(32767);
begin
loop
l_idx :=instr(l_list,p_del);
if l_idx > 0then
piperow(substr(l_list,1,l_idx-1));
l_list:= substr(l_list,l_idx+length(p_del));
else
piperow(l_list);
exit;
end if;
end loop;
return;
end split;
SQL> SELECT ROWNUM, COLUMN_VALUE FROM TABLE(split('one,two,three'));
rownum column_value
1 one
2 two
3 three
------------------------------------------------------------------------------------------------------------------------