2016-08-05 2 views
0

У меня есть таблица Employee, как показано ниже. Столбец «Изменить» содержит имена столбцов, значения которых изменяются через мое приложение. Данные в этом столбце разделяются запятой. Мне нужно запросить эту таблицу таким образом, чтобы результат имел одно изменение для каждой строки. т.е. разбить данные в столбце «Изменение» на запятую и выбрать соответствующую строку. У меня нет идеи, с чего начать! Пожалуйста помоги. enter image description hereSQL-запрос для извлечения строк на основе столбца

ответ

2

Давайте посмотрим, вы можете использовать функцию regexp_substr Оракула:

select distinct Id, Name, Address, trim(regexp_substr(Change,'[^,]+', 1, level)) 
from Employee 
connect by regexp_substr(Change, '[^,]+', 1, level) is not null; 

Это должно работать для любого числа значений, разделенных запятыми в вашем Change колонке.

См документ на функцию rexexp_substr здесь: https://docs.oracle.com/cd/B12037_01/server.101/b10759/functions116.htm

+0

идеально @daniel langemann очень ценна. –

1

здесь я попробовал с использованием REGEXP_SUBSTR включены MultiSet го уровня

with temp as 
    (
     select id, name, address, change from testemp 
    ) 
    select id,name,address,trim(regexp_substr(change, '[^,]+', 1, levels.column_value)) change 
    from temp t, 
    table(cast(multiset(select level from dual 
    connect by level <= length (regexp_replace(change, '[^,]+')) + 1) 
    as sys.OdciNumberList)) levels; 
Смежные вопросы