
范围类型
int4range:用于整数范围,支持4字节整数。 int8range:用于大整数范围,支持8字节整数。 numrange:用于数值范围,支持浮点数和整数。 tsrange:不带时区的时间戳范围。 tstzrange:带时区的时间戳范围。 daterange:日期范围。
发布日期:2021-05-08 12:28:23
浏览次数:16
分类:精选文章
本文共 2078 字,大约阅读时间需要 6 分钟。
PostgreSQL 范围类型详解
目录
- 文档用途
- 内建范围类型
- 范围操作符
- 范围函数
- 有边界的范围
- 无边界的范围
- 构建范围
文档用途
范围类型在PostgreSQL中起着重要作用,因为它们能够明确地表示某一范围内所有元素的值集合。这种类型特别适用于需要表达连续值范围的场景,如时间和日期等。通过使用范围类型,可以有效地表示范围重叠等概念,极大地简化了数据查询和操作。
内建范围类型
PostgreSQL 提供了多种内建范围类型,每种类型对应不同的数据元素。这些类型主要包括:
此外,用户还可以定义自定义范围类型以满足特定需求。
范围操作符
PostgreSQL 提供了丰富的操作符用于范围的查询和操作。以下是一些常用的操作符及其作用和示例:
操作符 | 描述 | 示例 | 结果 |
---|---|---|---|
= | 等于 | int4range(2,7) = '[2,6]'::int4range | true |
< > | 不等于 | numrange(2.1,3.2) < > numrange(2.1,3.3) | true |
< | 小于 | int4range(2,7) < int4range(3,5) | true |
> | 大于 | int4range(2,7) > int4range(2,5) | true |
<= | 小于等于 | int4range(2,7) <= int4range(2,7) | true |
>= | 大于等于 | int4range(2,7) >= int4range(2,5) | true |
@> | 包含 | int4range(2,7) @> int4range(2,5) | true |
<@ | 包含 | int4range(2,5) <@ int4range(1,6) | true |
&& | 重叠 | int4range(2,5) && int4range(1,6) | true |
<< | 严格左 | int4range(2,5) << int4range(1,10) | true |
>> | 严格右 | int4range(7,10) >> int4range(2,5) | true |
<-> | 差 | int4range(2,20) - int4range(5,30) | [2,5) |
+ | 并 | int4range(2,20) + int4range(5,30) | [2,30) |
* | 交 | int4range(2,20) * int4range(5,30) | [5,20) |
- | 差 | int4range(2,20) - int4range(5,30) | [2,5) |
范围函数
PostgreSQL 提供了一系列函数用于操作和检验范围。以下是一些常用函数及其描述:
函数 | 返回类型 | 描述 |
---|---|---|
lower(anyrange) | 元素类型 | 返回范围的下界 |
upper(anyrange) | 元素类型 | 返回范围的上界 |
isempty(anyrange) | boolean | 判断范围是否为空 |
lower_inc(anyrange) | boolean | 判断下界是否包含在内 |
upper_inc(anyrange) | boolean | 判断上界是否包含在内 |
lower_inf(anyrange) | boolean | 判断下界是否无限 |
upper_inf(anyrange) | boolean | 判断上界是否无限 |
range_merge(anyrange, anyrange) | boolean | 判断两个范围的最小范围是否包含在内 |
有边界的范围
每个非空范围都有明确的下界和上界。下界和上界的包含性由特定的字符决定:
- 包含下界:
[lower-bound, upper-bound]
- 不包含下界:
(lower-bound, upper-bound]
- 包含上界:
[lower-bound, upper-bound)
- 不包含上界:
(lower-bound, upper-bound)
无边界的范围
某些范围类型支持无边界的概念:
- 下界无限:
[lower-bound, infinity)
- 上界无限:
(lower-bound, infinity)
- 同时无界:
(infinity, infinity)
这些无界范围可以用于表示时间戳、坐标等领域中的无限概念。
构建范围
PostgreSQL 提供了构造器函数来创建范围。这些函数接受下界、上界以及边界包含性的文本参数。例如:
tsrange('2018-10-31 12:00:00', '2018-11-11 00:00:00', '[]')
如果第三个参数省略,则默认为包含下界和排除上界。
注意事项
- 范围的输入必须遵循特定的格式,确保下界和上界的正确性。
- 有些范围类型支持通过
null
值来表示无界边界。 - 在使用范围类型时,需谨慎处理无界范围,以避免潜在的性能问题。
如需了解更多详细信息,请访问【瀚高技术支持平台】。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月14日 14时14分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
The wxWindows Library Licence (WXwindows)
2019-03-09
leetcode——第203题——虚拟头结点
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
MySQL----基础及常用命令
2019-03-09
flink启动(二)
2019-03-09
前端开发进阶手册.pdf
2019-03-09
软件架构设计和MESH经验之谈
2019-03-09
关于宝塔面板安装的mysql用Navicat连接出现2003的错误解决
2019-03-09
Windows2016 FTP用户隔离
2019-03-09
js传入参数是中文的时候出现 “******”未定义错误
2019-03-09
吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
2019-03-09
pair的用法
2019-03-09
SQL基本操作命令
2019-03-09
C# WinForm程序退出的方法
2019-03-09
onFailure unexpected end of stream
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
Lua-table 一种更少访问的安全取值方式
2019-03-09
虚函数
2019-03-09