范围函数和操作符#

范围函数和操作符

范围类型的概述请见 范围类型

表 范围操作符 展示了范围类型可用的操作符。

范围操作符#

操作符

描述

例子

结果

=

等于

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树索引。

当涉及一个空范围时,左部/右部/相邻操作符总是返回假;即一个空范围被认为不在任何其他范围前面或者后面。

如果结果范围可能需要包含两个分离的子范围,并和差操作符将会失败,因为这样的范围无法被表示。

表 范围函数显示可用于范围类型的函数。

范围函数#

函数

返回类型

描述

例子

结果

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)

如果范围为空或者被请求的界是无限的,lowerupper函数返回空值。函数lower_incupper_inclower_infupper_inf对一个空范围全部返回假。