2016-04-29 65 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 ...',這對使用索引應該沒有問題。 –