Oracle SQL 如何对静态数据集执行集合操作?

How to perform set operations by Oracle SQL over static DATA sets?

需要在静态数据集上执行集合操作(​​MINUSINTERSECT,..)

例如:

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

预计 return 'b'

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

预计 return 'a','b','c',但我遇到了

ORA-00907: missing right parenthesis

您可以使用 predefined types 之一,如下所示:

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

另一种选择可能不是更好的选择。参见 DEMO HERE

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