2010-06-16

Список значений в набор строк

Необычная задача - преобразовать список значений разделенных запятыми в набор строк.
Имеем некую таблицу 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 для генерации нужного нам числа строк.

Комментариев нет:

Отправить комментарий