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

编程入门 行业动态 更新时间:2024-10-28 20:18:31
本文介绍了PostgreSQL 范围类型中的 NULL 与 `infinity`的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

PostgreSQL 范围类型中的无穷大"是什么意思?将 infinity 或 -infinity 指定为界限或 NULL 之间有什么区别吗?IE.infinity 是指定范围限制为无限的显式形式,而 NULL 会隐式指定无限限制范围吗?

What is the meaning of 'infinity' in PostgreSQL range types? Is there any difference between specifying infinity or -infinity as a bound, or NULL? I.e. is infinity an explicit form of specifying that the range bound is infinite, whereas NULL would implicit specify an infinite bound range?

请参阅以下示例:

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

推荐答案

更新:稍后再看,更好的解释:

Update: See this later, better explanation:

  • 当范围类型中的 NULL 边界在功能上等效时,为什么 PostgreSQL 会认为它们与无限边界不同?

NULL 对 重叠做同样的事情运算符 && 分别为 -infinity 或 infinity.我在这里引用手册:

NULL does the same thing for the overlap operator && as -infinity or infinity, respectively. I quote the manual here:

对任一边界使用 NULL 会导致该边的范围无界.

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

但是作为value,NULL还是有别于'infinity'!

But as value, NULL is still distinct from 'infinity'!

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

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

Returns FALSE (not NULL, mind you!).

更多内容请参见 SQLfiddle.

More in this SQLfiddle.

更多推荐

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

本文发布于:2023-10-16 11:18:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1497404.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:类型   PostgreSQL   infinity   NULL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!