На основе решения с regexp split вы можете запустить следующий запрос.
Обратите внимание, что вы должны знать максимальное количество полученных столбцов заранее.
with t1 as (select 1 rn, 'Orcl, orcl, linux box, Pass, tablespace_name1, tablespace_name2' col from dual union all
select 2 rn, 'Orcl2, orcl2, linux box2, Pass2, tablespace_name12, tablespace_name22' col from dual),
t2 as (select rownum colnum from dual connect by level <= 6 /* (max) number of columns */)
select t1.rn, t2.colnum, rtrim(ltrim(regexp_substr(t1.col,'[^,]+', 1, t2.colnum))) col from t1, t2
where regexp_substr(t1.col, '[^,]+', 1, t2.colnum) is not null
order by rn,colnum;
Это дает ряд, столбец и ключ вид:
RN COLNUM COL
----- ---------- ------------------
1 1 Orcl
1 2 orcl
1 3 linux box
1 4 Pass
1 5 tablespace_name1
1 6 tablespace_name2
2 1 Orcl2
2 2 orcl2
2 3 linux box2
2 4 Pass2
2 5 tablespace_name12
2 6 tablespace_name22
Вы можете использовать запрос PIVOT, чтобы получить результат в плоском столе
with t1 as (select 1 rn, 'Orcl, orcl, linux box, Pass, tablespace_name1, tablespace_name2' col from dual union all
select 2 rn, 'Orcl2, orcl2, linux box2, Pass2, tablespace_name12, tablespace_name22' col from dual),
t2 as (select rownum colnum from dual connect by level <= 6 /* (max) number of columns */),
t3 as (select t1.rn, t2.colnum, rtrim(ltrim(regexp_substr(t1.col,'[^,]+', 1, t2.colnum))) col from t1, t2
where regexp_substr(t1.col, '[^,]+', 1, t2.colnum) is not null)
select * from t3
PIVOT (max(col) col for (colnum) in
(1 as "1",
2 as "2",
3 as "3",
4 as "4",
5 as "5",
6 as "6"))
order by rn;
RN 1_COL 2_COL 3_COL 4_COL 5_COL 6_COL
----- --------- --------- --------- --------- --------- ---------
1 Orcl orcl linux box Pass tablespace_name1 tablespace_name2
2 Orcl2 orcl2 linux box2Pass2 tablespace_name12 tablespace_name22
Опять же, как вы видите вы должны указать все результирующие столбцы в запросе.
Что вы задают теги? ORCL? Пожалуйста, предоставьте нам некоторые данные об образцах и ожидаемый вывод, чтобы лучше понять проблему ура. – Crazy2crack
Нам нужно больше информации, прежде чем кто-нибудь сможет начать отвечать на этот вопрос. Пожалуйста, отправьте примеры данных, соответствующих таблиц и точно, каков ваш желаемый результат. Как бы то ни было, на ваш вопрос нельзя ответить. – Ollie
хорошо, вы получаете разные решения для строк CSV и для XML. Ответ ниже относится к формату в исходном вопросе ''Orcl, orcl, linux box, Pass, tablespace_name1, tablespace_name2''. –