2013-03-22 62 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