2013-06-19 5 views
0

Предположим, у меня есть столбец с отличными значениями (a,b,c,d,e,f) as values. В PL/SQL, как я могу сравнить этот столбец с набором, скажем, (a,b,d,f) и выводить индикатор?Как проверить, являются ли все значения столбца частью набора?

Мой подход был:

select case 
when values in (a,b,d,f) then 'yes' 
else 'no' 
end 

Однако этот подход имеет одно значение в то время, и проверить, если он находится в (a,b,d,f).

+0

Какой тип данных является «значениями», и как '', (,,,,,,,,,,), фактически представлены в этом столбце? –

+0

Действительно ли тип данных имеет значение? Предположим, что они варчар. – drum

+0

Да, потому что я не мог сказать, говоришь ли вы о разделительной строке или о типе объекта с несколькими записями. –

ответ

0

, если вы хотите сравнить все значения сразу можно использовать минус заявление оракула:

выберите значения
от your_table минус (

select 'a' from dual union all 
select 'b' from dual union all 
select 'd' from dual union all 
select 'f' from dual 

)

это будет извлекать все значения из вашей_таблицы, которые не находятся в (a, b, d, f).

вы можете также использовать функцию SYS.DBMS_DEBUG_VC2COLL передать запятыми список значений в таблицу (вместо того, чтобы использовать

выбрать ... от двойного союза все ...

)

вы можете узнать больше о SYS.DBMS_DEBUG_VC2COLL here.

+0

Но я хочу те, которые находятся в (a, b, d, f). – drum

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