У меня есть таблица, состоящая из списка имен, разделенных запятой. Моя цель - разделить их номерами.Разбиение строки на несколько строк в Oracle 8i
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 * from the (select cast(str2tbl(Name, ',') as mytableType)
from SPLITSTRING);
и получил результат ниже, но не могу вывести значения номера столбец:
Name
Anne
Amy
Ben
Bryan
Есть ли способ разделить на строки в Oracle 8i?
вы можете найти некоторые другие способы для достижения своей цели здесь: Http: // StackOverflow.com/questions/14328621/splitting-string-into-multiple-rows-in-oracle –
'XmlTable' поддерживается только в 10g и выше; связанное решение использует 'regexp_substr', даже не поддерживается в 8i – Aleksej
hi krishna, Aleksej, спасибо за информацию. Я попробую его без использования connect или regexp. – abigal689