第一次见。
range类型,可以进行范围快速搜索。用于表示范围,而范围底下的基本类型成为range类型的subtype。

range类型:
int4range:4字节整数的范围类型
int8range:8字节整数的范围类型
numrange:numeric的范围类型
tsrange:无时区的时间戳范围类型
tstzrange:有时区的时间戳范围类型
datarange:日期的范围类型

还可以使用create type创建一些range类型:
create type tname as range(
subtype=subtype     --指定子类型
[,subtype_opclass=subtype_operation_class]    --指定子类型的操作符
[,collation = collation]       ---指定排序规则

'('  ')' 表示范围内不包括此元素,'[' ']' 表示范围内包括此元素。如果是稀疏类型的range,其内部存储格式为"'[v1,v2)'"。empty表示空,即范围内不包括任何东西。

postgres=# select '(0,6)'::int4range;
 int4range
-----------
 [1,6)
(1 row)

postgres=# select '[0,6)'::int4range;
 int4range
-----------
 [0,6)
(1 row)

postgres=# select '[0,6]'::int4range;
 int4range
-----------
 [0,7)
(1 row)

postgres=# select 'empty'::int4range;
 int4range
-----------
 empty
(1 row)


postgres=# select '(0,6)'::numrange;
 numrange
----------
 (0,6)
(1 row)

postgres=# select '[0,6)'::numrange;
 numrange
----------
 [0,6)
(1 row)

postgres=# select '[0,6]'::numrange;
 numrange
----------
 [0,6]
(1 row)

postgres=# select '(0,6]'::numrange;
 numrange
----------
 (0,6]
(1 row)

postgres=# select 'empty'::numrange;
 numrange
----------
 empty
(1 row)

postgres=# select int4range(1,10,'[)');
 int4range
-----------
 [1,10)
(1 row)

无觅关联推荐,快速提升流量