范围函数和操作符

    • 描述:等于

      示例:

    • <>

      描述:不等于

      示例:

      1. result
      2. --------
      3. t
      4. (1 row)
    • <

      描述:小于

      示例:

      1. postgres=# SELECT int4range(1,10) < int4range(2,3) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >

      描述:大于

      示例:

      1. postgres=# SELECT int4range(1,10) > int4range(1,5) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <=

      描述:小于或等于

      示例:

      1. postgres=# SELECT numrange(1.1,2.2) <= numrange(1.1,2.2) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >=

      描述:大于或等于

      示例:

      1. postgres=# SELECT numrange(1.1,2.2) >= numrange(1.1,2.0) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • @>

      描述:包含范围

      示例:

      1. postgres=# SELECT int4range(2,4) @> int4range(2,3) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • @>

      描述:包含元素

      示例:

      1. postgres=# SELECT '[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10'::timestamp AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <@

      描述:元素包含于

      1. postgres=# SELECT 42 <@ int4range(1,7) AS RESULT;
      2. --------
      3. f
      4. (1 row)
    • &&

      描述:重叠(有共同点)

      示例:

      1. postgres=# SELECT int8range(3,7) && int8range(4,12) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <<

      描述:范围值是否比另一个范围值的最小值还小(没有交集)

      示例:

      1. postgres=# SELECT int8range(1,10) << int8range(100,110) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >>

      描述:范围值是否比另一个范围值的最大值还大(没有交集)

      示例:

      1. postgres=# SELECT int8range(50,60) >> int8range(20,30) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • &<

      描述:范围值的最大值是否不超过另一个范围值的最大值。

      示例:

      1. postgres=# SELECT int8range(1,20) &< int8range(18,20) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • &>

      描述:范围值的最小值是否不小于另一个范围值的最小值。

      示例:

      1. postgres=# SELECT int8range(7,20) &> int8range(5,10) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • -|-

      描述:相邻

      示例:

      1. postgres=# SELECT numrange(1.1,2.2) -|- numrange(2.2,3.3) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • +

      描述:并集

      示例:

    • *

      描述:交集

      示例:

      1. postgres=# SELECT int8range(5,15) * int8range(10,20) AS RESULT;
      2. [10,15)
      3. (1 row)
    • -

      描述:差集

      示例:

      1. postgres=# SELECT int8range(5,15) - int8range(10,20) AS RESULT;
      2. result
      3. --------
      4. [5,10)
      5. (1 row)

    简单的比较操作符<,>,<=和>=先比较下界,只有下界相等时才比较上界。

    并集和差集操作符的执行结果无法包含两个不相交的子范围。

    范围函数

    • lower(anyrange)

      描述:范围的下界

      返回类型:范围元素类型

      示例:

      1. postgres=# SELECT lower(numrange(1.1,2.2)) AS RESULT;
      2. result
      3. --------
      4. 1.1
      5. (1 row)
    • upper(anyrange)

      描述:范围的上界

      返回类型:范围元素类型

      示例:

      1. postgres=# SELECT upper(numrange(1.1,2.2)) AS RESULT;
      2. result
      3. --------
      4. 2.2
      5. (1 row)
    • isempty(anyrange)

      描述:范围是否为空

      返回类型:Boolean

      示例:

      1. postgres=# SELECT isempty(numrange(1.1,2.2)) AS RESULT;
      2. result
      3. --------
      4. f
      5. (1 row)
    • lower_inc(anyrange)

      描述:是否包含下界

      返回类型:Boolean

      示例:

      1. postgres=# SELECT lower_inc(numrange(1.1,2.2)) AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • upper_inc(anyrange)

      描述:是否包含上界

      返回类型:Boolean

      示例:

      1. postgres=# SELECT upper_inc(numrange(1.1,2.2)) AS RESULT;
      2. result
      3. --------
      4. f
      5. (1 row)
    • lower_inf(anyrange)

      描述:下界是否为无穷

      返回类型:Boolean

      示例:

    • upper_inf(anyrange)

      描述:上界是否为无穷

      返回类型:Boolean

      1. postgres=# SELECT upper_inf('(,)'::daterange) AS RESULT;
      2. result
      3. --------

    如果范围是空或者需要的界限是无穷的,lower和upper函数将返回null。lower_inc、upper_inc、lower_inf和upper_inf函数均对空范围返回false。