2013-06-19 52 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

什么样的数据类型是'values',以及'(a,b,c,d,e,f)'是如何在该列中实际表示的? –

+0

数据类型真的很重要吗?假设他们是varchar。 – drum

+0

是的,因为我无法分辨您是在讨论分隔字符串还是有多个记录的对象类型。 –

回答

0

,如果你想比较一次就可以使用Oracle的减去声明的所有值:

选择值
从your_table减去 (

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

这将检索your_table中不在(a,b,d,f)中的所有值。

,你也可以使用SYS.DBMS_DEBUG_VC2COLL功能的逗号分隔值列表转移到表(而不是使用

选择...从双UNION ALL ...

你可以阅读更多关于SYS.DBMS_DEBUG_VC2COLL here

+0

但我想要那些在(a,b,d,f)中的。 – drum

相关问题