PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
上一页 | 上一级 | 章 9. 函数和操作符 | 下一页 |
参阅第 8.17 节获取范围类型的概述。
表 9-44显示了范围类型可用的操作符。
表 9-44. 范围操作符
操作符 | 描述 | 示例 | 结果 |
---|---|---|---|
= | 等于 | 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-tree索引才提供的。
左于/右于/邻近操作符当包含空范围时也会返回false;也就是, 不认为空范围在其他范围之前或之后。
并集和差集操作符在结果范围需要包含两个不相交的子范围时失败,因此不能表示这样一个范围。
表 9-45显示了可以和范围一起使用的函数。
表 9-45. 范围函数
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
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 |
如果范围是空或者需要的界限是无穷的,lower
和upper
函数返回null。lower_inc
, upper_inc
,
lower_inf
和upper_inf
函数均对空范围返回false。