↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
历史版本。 PostgreSQL 11 已结束支持。 2023-11-09. 请参阅 当前版本手册.

9.19. 范围函数和操作符 #

范围类型的概述可参见第 8.17 节。

表 9.50 列出了可用于范围类型的操作符。

表 9.50. 范围操作符

操作符描述示例结果
= 等于int4range(1,5) = '[1,4]'::int4range t
<> 不等于numrange(1.1,2.2) <> numrange(1.1,2.3) t
< 小于int4range(1,10) < int4range(2,3) t
> 大于int4range(1,10) > int4range(1,5) t
<= 小于等于numrange(1.1,2.2) <= numrange(1.1,2.2) t
>= 大于等于numrange(1.1,2.2) >= numrange(1.1,2.0) t
@> 包含范围int4range(2,4) @> int4range(2,3) t
@> 包含元素'[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10'::timestamp t
<@ 范围被包含于int4range(2,4) <@ int4range(1,7) t
<@ 元素被包含于42 <@ int4range(1,7)f
&& 重叠(有公共点)int8range(3,7) && int8range(4,12) t
<< 严格位于左侧int8range(1,10) << int8range(100,110) t
>> 严格位于右侧int8range(50,60) >> int8range(20,30) t
&< 不超出其右边界int8range(1,20) &< int8range(18,20) t
&> 不超出其左边界int8range(7,20) &> int8range(5,10) t
-|- 与之相邻numrange(1.1,2.2) -|- numrange(2.2,3.3) t
+ 并集numrange(5,15) + numrange(10,20)[5,20)
* 交集int8range(5,15) * int8range(10,20)[10,15)
-差集int8range(5,15) - int8range(10,20)[5,10)

简单比较操作符 <、>、<= 和 >= 首先比较下界,只有下界相等时才比较上界。这些比较对范围通常用处不大,但提供这些操作符可以在范围上建立 B-树索引。

涉及空范围时,左侧、右侧和相邻操作符总是返回假;也就是说,空范围不被视为位于任何其他范围之前或之后。

如果结果范围需要包含两个不相交的子范围,并集和差集操作符会失败,因为这样的范围无法表示。

表 9.51 列出了可用于范围类型的函数。

表 9.51. 范围函数

函数返回类型描述示例结果
lower(anyrange) 范围的元素类型范围的下界lower(numrange(1.1,2.2))1.1
upper(anyrange) 范围的元素类型范围的上界upper(numrange(1.1,2.2))2.2
isempty(anyrange) boolean范围是否为空?isempty(numrange(1.1,2.2))false
lower_inc(anyrange) boolean是否包含下界?lower_inc(numrange(1.1,2.2))true
upper_inc(anyrange) boolean是否包含上界?upper_inc(numrange(1.1,2.2))false
lower_inf(anyrange) boolean下界是否无穷?lower_inf('(,)'::daterange)true
upper_inf(anyrange) boolean上界是否无穷?upper_inf('(,)'::daterange)true
range_merge(anyrange, anyrange) anyrange包含两个给定范围的最小范围range_merge('[1,2)'::int4range, '[3,4)'::int4range)[1,4)

如果范围为空,或请求的边界是无限的,lower 和 upper 函数返回 null。对于空范围,lower_inc、upper_inc、lower_inf 和 upper_inf 函数都返回假。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.