無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

9.19. 範囲関数と演算子

範囲型の概要に関しては 項8.17 を参照してください。

範囲型に対して利用可能な演算子を 表9-44 に示します。

表 9-44. 範囲演算子

演算子 説明 結果
= 等しい 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)

単純な比較演算子である < > <= そして >= は、最初に下限の境界を比較し、それらが等しい場合のみ上限の境界を比較する。 これらの比較演算子は、範囲型のデータに関しては大抵便利なものではありませんが、範囲型へBtreeインデックスを付与するのに必要なため提供されています。

左に位置する/右に位置する/隣接の演算子は、空の範囲が呼ばれた際は常に偽を返します。つまり、空の範囲に対しては、他のどの範囲の前後のどちらであるかは考慮されないということです。

結合範囲と差分範囲演算子は、もし得られる結果が互いに離れた2つの範囲を含む必要がある場合、このような範囲を表現することができないため失敗するでしょう。

範囲型に対して利用可能な関数を 表9-45 に示します。

表 9-45. 範囲関数

関数 戻り値型 説明 結果
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

lower upper 関数は、もし範囲が空か対象の境界が無限大だった場合、NULLを返します。 lower_inc upper_inc lower_inf 、そして upper_inf 関数は、空の範囲に対しては全て偽を返します。


powered by SEO.CUG.NET