范围函数和操作符
范围操作符
- =
描述:等于
示例:
1 2 3 4 5
SELECT int4range(1,5) = '[1,4]'::int4range AS RESULT; result -------- t (1 row)
- <>
描述:不等于
示例:
1 2 3 4 5
SELECT numrange(1.1,2.2) <> numrange(1.1,2.3) AS RESULT; result -------- t (1 row)
- <
描述:小于
示例:
1 2 3 4 5
SELECT int4range(1,10) < int4range(2,3) AS RESULT; result -------- t (1 row)
- >
描述:大于
示例:
1 2 3 4 5
SELECT int4range(1,10) > int4range(1,5) AS RESULT; result -------- t (1 row)
- <=
描述:小于或等于
示例:
1 2 3 4 5
SELECT numrange(1.1,2.2) <= numrange(1.1,2.2) AS RESULT; result -------- t (1 row)
- >=
描述:大于或等于
示例:
1 2 3 4 5
SELECT numrange(1.1,2.2) >= numrange(1.1,2.0) AS RESULT; result -------- t (1 row)
- @>
描述:包含范围
示例:
1 2 3 4 5
SELECT int4range(2,4) @> int4range(2,3) AS RESULT; result -------- t (1 row)
- @>
描述:包含元素
示例:
1 2 3 4 5
SELECT '[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10'::timestamp AS RESULT; result -------- t (1 row)
- <@
描述:范围包含于
示例:
1 2 3 4 5
SELECT int4range(2,4) <@ int4range(1,7) AS RESULT; result -------- t (1 row)
- <@
描述:元素包含于
示例:
1 2 3 4 5
SELECT 42 <@ int4range(1,7) AS RESULT; result -------- f (1 row)
- &&
描述:重叠(有共同点)
示例:
1 2 3 4 5
SELECT int8range(3,7) && int8range(4,12) AS RESULT; result -------- t (1 row)
- <<
描述:范围值是否比另一个范围值的最小值还小(没有交集)
示例:
1 2 3 4 5
SELECT int8range(1,10) << int8range(100,110) AS RESULT; result -------- t (1 row)
- >>
描述:范围值是否比另一个范围值的最大值还大(没有交集)
示例:
1 2 3 4 5
SELECT int8range(50,60) >> int8range(20,30) AS RESULT; result -------- t (1 row)
- &<
描述:范围值的最大值是否不超过另一个范围值的最大值。
示例:
1 2 3 4 5
SELECT int8range(1,20) &< int8range(18,20) AS RESULT; result -------- t (1 row)
- &>
描述:范围值的最小值是否不小于另一个范围值的最小值。
示例:
1 2 3 4 5
SELECT int8range(7,20) &> int8range(5,10) AS RESULT; result -------- t (1 row)
- -|-
描述:相邻
示例:
1 2 3 4 5
SELECT numrange(1.1,2.2) -|- numrange(2.2,3.3) AS RESULT; result -------- t (1 row)
- +
描述:并集
示例:
1 2 3 4 5
SELECT numrange(5,15) + numrange(10,20) AS RESULT; result -------- [5,20) (1 row)
- *
描述:交集
示例:
1 2 3 4 5
SELECT int8range(5,15) * int8range(10,20) AS RESULT; result --------- [10,15) (1 row)
- -
描述:差集
示例:
1 2 3 4 5
SELECT int8range(5,15) - int8range(10,20) AS RESULT; result -------- [5,10) (1 row)
简单的比较操作符<,>,<=和>=先比较下界,只有下界相等时才比较上界。
<<、>>和-|-操作符当包含空范围时也会返回false;也就是,不认为空范围在其他范围之前或之后。
并集和差集操作符的执行结果无法包含两个不相交的子范围。
范围函数
- lower(anyrange)
描述:范围的下界
返回类型:范围元素类型
示例:
1 2 3 4 5
SELECT lower(numrange(1.1,2.2)) AS RESULT; result -------- 1.1 (1 row)
- upper(anyrange)
描述:范围的上界
返回类型:范围元素类型
示例:
1 2 3 4 5
SELECT upper(numrange(1.1,2.2)) AS RESULT; result -------- 2.2 (1 row)
- isempty(anyrange)
描述:范围是否为空
返回类型:boolean
示例:
1 2 3 4 5
SELECT isempty(numrange(1.1,2.2)) AS RESULT; result -------- f (1 row)
- lower_inc(anyrange)
描述:是否包含下界
返回类型:boolean
示例:
1 2 3 4 5
SELECT lower_inc(numrange(1.1,2.2)) AS RESULT; result -------- t (1 row)
- upper_inc(anyrange)
描述:是否包含上界
返回类型:boolean
示例:
1 2 3 4 5
SELECT upper_inc(numrange(1.1,2.2)) AS RESULT; result -------- f (1 row)
- lower_inf(anyrange)
描述:下界是否为无穷
返回类型:boolean
示例:
1 2 3 4 5
SELECT lower_inf('(,)'::daterange) AS RESULT; result -------- t (1 row)
- upper_inf(anyrange)
描述:上界是否为无穷
返回类型:boolean
示例:
1 2 3 4 5
SELECT upper_inf('(,)'::daterange) AS RESULT; result -------- t (1 row)
如果范围是空或者需要的界限是无穷的,lower和upper函数将返回null。lower_inc、upper_inc、lower_inf和upper_inf函数均对空范围返回false。
查看更多:华为GaussDB 200 函数和操作符
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。