之间和重叠之间可互换使用

时间:2013-10-30 06:58:32

标签: postgresql

postgresql中“BETWEEN”和“OVERLAPS”有什么区别?

你可以提供一个例子吗?是否可能在重叠语法中具有NULL值 (NULL,x)OVERLAPS(?,?)。

1 个答案:

答案 0 :(得分:1)

使用a,b,c整数,a between b and c意味着它用简单的英语意味着什么:

b <= a and a <= c

使用a,b,c,d整数,[a,b] overlaps [c,d]表示它们具有共同的元素:

not(b <= c) and not(d <= a)

(处理重叠时的思维界限。)

处理范围类型时,空值表示无穷大。


示例:

denis=# select int4range(-1, 0), int4range(0, 1);
 int4range | int4range 
-----------+-----------
 [-1,0)    | [0,1)
(1 row)

denis=# select int4range(null, 0), int4range(0, null);
 int4range | int4range 
-----------+-----------
 (,0)      | [0,)
(1 row)

denis=# select int4range(null, 0) && int4range(0, null) as test;
 test 
------
 f
(1 row)

denis=# select int4range(null, 1) && int4range(0, null) as test;
 test 
------
 t
(1 row)