GBase 8c 数据类型-范围类型 之 内建范围类型
范围类型是表达某种元素类型值的范围的数据类型,这种元素类型称为称为范围的subtype。例如,timestamp的范围,可用来表达一个会议室被保留的时间范围。在这种情况下,范围的数据类型是tsrange(timestamp range的简写),范围subtype的数据类型为timestamp。subtype必须具有某种总体的顺序,保证元素值是在范围值之内。范围值界限是清楚的。
范围类型可以表达一种单一范围值中的多个元素值,并且可以清晰地表达诸如范围重叠等概念。例如,用于时间安排的时间和日期范围、价格范围、仪器的量程等方面,都可使用范围类型。
GBase 8c提供如下内建范围类型:
l int4range — integer的范围
l int8range — bigint的范围
l numrange — numeric的范围
l tsrange — 不带时区的 timestamp的范围
l tstzrange — 带时区的 timestamp的范围
l daterange — date的范围
此外,用户也可以定义自己的范围类型,详见14.94 CREATE TYPE。
示例
gbase=# CREATE TABLE reservation (room int, during tsrange);
CREATE TABLE
gbase=# INSERT INTO reservation VALUES (1108, '[2010-01-01 14:30, 2010-01-01 15:30)');
INSERT 0 1
-- 包含
gbase=# SELECT int4range(10, 20) @> 3;
f
-- 重叠
gbase=# SELECT numrange(11.1, 22.2) && numrange(20.0, 30.0);
t
-- 抽取上界
gbase=# SELECT upper(int8range(15, 25));
25
-- 计算交集
gbase=# SELECT int4range(10, 20) * int4range(15, 25);
[15,20)
-- 范围为空吗?
gbase=# SELECT isempty(numrange(1, 5));
f
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529