微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

Postgresql范围类型中’infinity’的含义是什么?指定无穷大或-infinity作为边界或NULL是否有任何区别?即是无穷大是指定范围界限是无限的显式形式,而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

解决方法

NULL对于 overlap operator &&分别为-infinity或infinity做同样的事情.我引用 the manual here

Using NULL for either bound causes the range to be unbounded on that side.

但作为价值,NULL仍然与’无限’截然不同!

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

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

更多内容在此SQLfiddle.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐