コンマで区切られた名前のリストで構成されるテーブルがあります。私の目標は、それらを部屋で区切ることです。
Room | Name
room1 | Anne,Amy
room2 | Ben,Bryan
私の目標:
Room | Name
room1 | Anne
room1 | Amy
room2 | Ben
room2 | Bryan
文字列を行に分割する方法についていくつかの解決策を読みましたが、Oracle 8i で実行する代替手段はありますか。いくつかの記事に従って、次のように行に分割しました。
create or replace function str2tbl( p_str IN varchar2 , p_delimiter in varchar2) return mytabletype
as
l_str long default p_str || p_delimiter;
l_n number;
l_data mytabletype := mytabletype();
begin
loop
l_n := instr( l_str, p_delimiter );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
end loop;
return l_data;
end str2tbl;
次に、以下のようにテーブルから SELECT を実行します。
select * from the ( select cast(str2tbl( Name, ',' ) as mytableType )
from SPLITSTRING);
結果を下回りましたが、部屋の列の値を引き出すことはできません:
Name
Anne
Amy
Ben
Bryan
Oracle 8i で行に分割する方法はありますか?