PostgreSQL范围类型中的NULL与`infinity`

时间:2013-03-22 19:05:31

标签: postgresql null range postgresql-9.2 infinity

PostgreSQL范围类型中'infinity'的含义是什么?将infinity-infinity指定为绑定或NULL之间是否有任何区别?即是infinity一个明确的形式,指定范围界限是无限的,而NULL将隐式指定一个无限界限范围?

请参阅以下示例:

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

1 个答案:

答案 0 :(得分:8)

NULL分别对overlap operator && -infinityinfinity执行相同的操作。我引用the manual here

  

对任一边界使用NULL会导致范围在该边无限制。

但是作为NULL仍然与'infinity'不同!

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

返回FALSE(不是NULL,请注意!)。

更多信息SQLfiddle