假设我有一列具有不同的值(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)
.
如果要一次比较所有值,可以使用 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的更多信息。
您可以尝试从一组值中进行选择,请参阅Oracle 文档:对象表,并使用连接命令。