如何检查列的所有值是否属于集合的一部分?

时间:2013-06-19 21:39:18

标签: plsql set

假设我有一个具有不同值(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)

2 个答案:

答案 0 :(得分:0)

如果你想一次比较所有值,你可以使用oracle' s minus语句:

  

选择值
  从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函数将逗号分隔的值列表传输到表中(而不是使用

  

从双联盟中选择... ...

您可以阅读有关SYS.DBMS_DEBUG_VC2COLL here的更多信息。

答案 1 :(得分:-1)

您可以尝试从您的一组值中进行选择,请参阅Oracle Documentation: Object Tables,然后使用join命令。