假设我有一个不同值的列(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)
。
假设我有一个不同值的列(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 Documentation: Object Tables,并使用连接命令。
,如果你想比较一次就可以使用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。
但我想要那些在(a,b,d,f)中的。 – drum
什么样的数据类型是'values',以及'(a,b,c,d,e,f)'是如何在该列中实际表示的? –
数据类型真的很重要吗?假设他们是varchar。 – drum
是的,因为我无法分辨您是在讨论分隔字符串还是有多个记录的对象类型。 –