2016-04-29 39 views
2

我试图选择任何范围集合中存在值的行。到目前为止,我只能够做了以下工作:SELECT在范围集合中的值

SELECT * FROM table 
WHERE num <@ numrange(1,4) OR num <@ numrange(7,11) 

我希望我能够得到这样的

SELECT * FROM table 
WHERE num <@ ANY(numrange(1,4), numrange(7,11)) 

的工作,但我没有任何运气用它。

任何想法比链接ORs更好的解决方案吗?

回答

2

你是关闭...在ANY(...)表达式的值必须是一个数组:

SELECT * FROM table 
WHERE num <@ ANY(ARRAY[numrange(1,4), numrange(7,11)]) 
+0

完美的作品,谢谢! – pgoggijr

+0

你会碰巧对num列上的索引有任何提示吗? – pgoggijr

+0

'<@'操作符会使这种操作变得困难。在这种情况下,我可能只是将查询写为'num BETWEEN 1 AND 3 OR ...',这对使用索引应该没有问题。 –