如何通过Oracle SQL在静态数据集上执行集合操作?
问题描述:
需要通过静态数据进行集合操作(MINUS
,INTERSECT
,..)设置如何通过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'))
答
另一种选择,虽然可能不是一个更好的一个。请参阅DEMO HERE
(SELECT 'a' from dual
union
select 'b' from dual)
MINUS
select 'a' from dual;
很好的答案.. + 1 –