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
答案 0 :(得分:8)
NULL
分别对overlap operator &&
-infinity
或infinity
执行相同的操作。我引用the manual here:
对任一边界使用NULL会导致范围在该边无限制。
但是作为值,NULL
仍然与'infinity'
不同!
SELECT tstzrange('-infinity','infinity') = tstzrange(NULL, NULL);
返回FALSE
(不是NULL
,请注意!)。
更多信息SQLfiddle。