Необычная задача - преобразовать список значений разделенных запятыми в набор строк.
Имеем некую таблицу lists, в поле code которой имеем некоторые списки значений через запятую (111,222,333 и т.п.). В результате следующего запроса получаем выборку уникальных значений всех списков из таблицы lists, каждое находится в отдельной строке.
select distinct code
from
(select regexp_substr(q.code, '[^,]+', 1, rownum) code
from dual,
(select length(regexp_replace(wm_concat(l.code), '[^,]'))+1 l_cnt
,wm_concat(l.code) code
from lists l
) q
connect by rownum <= q.l_cnt
)
where code is not null;
P.S. используем конструкцию вида select rownum from dual connect by rownum <= :counter для генерации нужного нам числа строк.
Комментариев нет:
Отправить комментарий