2013-03-22 64 views
3

PostgreSQL範圍類型中的'infinity'的含義是什麼?指定infinity-infinity作爲綁定還是NULL?即是infinity一個明確的形式,指定範圍界限是無限的,而NULL會隱式指定一個無限界限範圍?PostgreSQL範圍類型中的NULL與`infinity`的關係

請參見下面的例子:

SELECT tstzrange('-infinity','infinity') && tstzrange(NULL, NULL); 
?column? 
---------- 
t 

SELECT tstzrange('2013-01-01 00:00:00+01', '2013-02-01 00:00:00+01') 
    && tstzrange(NULL, '2013-03-01 00:00:00+01'); 
?column? 
---------- 
t 

SELECT tstzrange('2013-01-01 00:00:00+01', '2013-02-01 00:00:00+01') 
    && tstzrange('-infinity', '2013-03-01 00:00:00+01'); 
?column? 
---------- 
t 

回答

6

NULL做同樣的事情在overlap operator &&分別-infinityinfinity。我引用the manual here

對任一邊界使用NULL將導致範圍在該邊無界。

但作爲NULL仍有別於'infinity'

SELECT tstzrange('-infinity','infinity') = tstzrange(NULL, NULL); 

返回FALSE(不NULL,你得注意!)。

更多在此SQLfiddle