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

相關問題