範囲型の概要に関しては8.17を参照してください。
範囲型に対して利用可能な演算子を表 9.50に示します。
表9.50 範囲演算子
| 演算子 | 説明 | 例 | 結果 | 
|---|---|---|---|
| = | 等しい | 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-treeインデックスを付与するのに必要なため提供されています。
  
左に位置する/右に位置する/隣接する、の演算子は、範囲の一方が空の時は常に偽を返します。つまり、空の範囲に対しては、他のどの範囲の前後のどちらであるともみなされない、ということです。
結合範囲と差分範囲演算子は、もし得られる結果が互いに離れた2つの範囲を含む必要がある場合、このような範囲を表現することができないためエラーとなります。
範囲型に対して利用可能な関数を表 9.51に示します。
表9.51 範囲関数
| 関数 | 戻り値型 | 説明 | 例 | 結果 | 
|---|---|---|---|---|
| 
           | 範囲の要素の型 | 範囲の下限 | lower(numrange(1.1,2.2)) | 1.1 | 
| 
           | 範囲の要素の型 | 範囲の上限 | upper(numrange(1.1,2.2)) | 2.2 | 
| 
           | boolean | 空の範囲か? | isempty(numrange(1.1,2.2)) | false | 
| 
           | boolean | 下限は範囲に含まれるか? | lower_inc(numrange(1.1,2.2)) | true | 
| 
           | boolean | 上限は範囲に含まれるか? | upper_inc(numrange(1.1,2.2)) | false | 
| 
           | boolean | 下限は無限大か? | lower_inf('(,)'::daterange) | true | 
| 
           | boolean | 上限は無限大か? | upper_inf('(,)'::daterange) | true | 
| 
           | anyrange | 両方の範囲を含む最小の範囲 | range_merge('[1,2)'::int4range, '[3,4)'::int4range) | [1,4) | 
lowerとupper関数は、範囲が空の場合および対象の境界が無限大の場合は、NULLを返します。
lower_inc、upper_inc、lower_inf、そしてupper_inf関数は、空の範囲に対しては全て偽を返します。