Архив

Posts Tagged ‘CONNECT BY’

Создать дубликаты строк

with t as
(
  select 'a' a, 2 n from dual union all
  select 'b' a, 3 n from dual union all
  select 'c' a, 5 n from dual union all
  select 'd' a, 1 n from dual union all
  select 'e' a, 0 n from dual
)
select *
 from t,
      table(select collect(level) from dual connect by level<=t.n);

A          N COLUMN_VALUE
- ---------- ------------
a          2            1
a          2            2
b          3            1
b          3            2
b          3            3
c          5            1
c          5            2
c          5            3
c          5            4
c          5            5
d          1            1
e          0            1

12 rows selected

При n=0, строка останется.

Тег «Далее»

Рубрики:SQL Метки: , , , , ,

Извлечь подстроки используя разделители

SELECT regexp_substr(str, '[^;]+', 1, level) str
FROM (
      SELECT ' 1; 2; test1.' str FROM dual     ) t
CONNECT BY instr(str, ';', 1, level - 1) > 0

Пример вывода данных:

STR
-------------
1
2
test1.

Более сложный пример…

Тег «Далее»

Рубрики:SQL Метки: , , ,