2015-06-22 5 views
-1

У меня есть таблица, в которой есть столбец, который содержит значения как 1: 2 или 2: 3 или 2: 3: 4 и т. Д. Мне нужно декодировать эти значения на основе их значений упомянутых в другой таблице. как 1, равно x и 2 равно y.Декодировать значения столбца в plsql

В колонке 5 значений. ранее только одно значение было там, где имя по отношению к этим значениям извлекалось из другой таблицы по условию объединения. Но теперь любая комбинация из 5 значений может быть разделена на «:» - двоеточие. Предложите, как получить имена этих значений для столбца. Дайте мне знать, если требуется какая-либо другая деталь.

Пожалуйста, предложите способ реализовать это.

+1

Но почему вы храните данные, подобные элементам, разделенным двоеточием? – jarlh

+1

Покажите нам свою полную хранимую процедуру –

+0

Возможно, дубликат http://stackoverflow.com/questions/29683450/split-string-oracle-into-a-single-column-and-insert-into-a-table –

ответ

1

Привет, как вам нужно идти; Сначала начните с внутреннего запроса, он даст все значения в столбце, например 1, 2,3, 4 и т. Д., Тогда необходимо создать таблицу отображения, например. От 1 до 'x', от 2 до 'y' физически или логически, как я это сделал, и выбирать из таблицы сопоставления в соответствии с результатом внутреннего запроса, который является вашими указанными значениями столбца.

with map_data as (
     select 1 as d_value , 'X' as m_value from dual 
     union all 
     select 2 as d_value , 'Y' as m_value from dual 
     union all 
     select 3 as d_value , 'Z' as m_value from dual) 
    select * from map_data 
    where d_value in(
    WITH data AS (
     SELECT '1:2:3' AS "value" FROM DUAL 
     UNION ALL 
     SELECT '2:4' AS "value" FROM DUAL 
    ) 
    SELECT REGEXP_SUBSTR(data."value", '[^:]+', 1, levels.COLUMN_VALUE) 
    FROM data, 
      TABLE(
       CAST(
       MULTISET(
        SELECT LEVEL 
        FROM DUAL 
        CONNECT BY LEVEL <= LENGTH(regexp_replace("value", '[^:]+')) + 1 
       ) AS sys.OdciNumberList 
      ) 
      ) levels) 
+1

есть 5 значений в столбце. ранее только одно значение было там, где имя по отношению к этим значениям извлекалось из другой таблицы по условию объединения. Но теперь любая комбинация из 5 значений может быть разделена на «:» - двоеточие. Предложите, как получить имена этих значений для столбца. Позвольте мне знать, требуется ли какая-либо другая деталь. –

Смежные вопросы