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).

4

2 回答 2

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

select ... from dual union all ...

)

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

于 2013-06-24T06:00:38.453 回答
-1

您可以尝试从一组值中进行选择,请参阅Oracle 文档:对象表,并使用连接命令。

于 2013-06-20T11:08:00.163 回答