如何通过Oracle SQL在静态数据集上执行集合操作?

问题描述:

需要通过静态数据进行集合操作(​​MINUSINTERSECT,..)设置如何通过Oracle SQL在静态数据集上执行集合操作?

例如:

SELECT ('a','b') MINUS ('a') from dual; 

有望重返'b'

SELECT ('a','b') INTERSECT ('c') from dual; 

预计返回'a','b','c',但我面临

ORA-00907: missing right parenthesis 

您可以使用predefined types之一,喜欢这里:

select * from table(sys.odcivarchar2list('a', 'b')) 
minus 
select * from table(sys.odcivarchar2list('c')) 
+0

很好的答案.. + 1 –

另一种选择,虽然可能不是一个更好的一个。请参阅DEMO HERE

(SELECT 'a' from dual 
union 
select 'b' from dual) 
MINUS 
select 'a' from dual;