すべてのプロダクト
Search
ドキュメントセンター

PolarDB:レンジ /マルチレンジ関数と演算子

最終更新日:May 31, 2024

このトピックでは、PolarDB for PostgreSQL (Compatible with Oracle) でサポートされている範囲 /マルチレンジ関数と演算子について説明します。

次の表は、範囲タイプで使用できる特殊な演算子を示しています。表9.54は、マルチレンジ型に利用可能な特殊演算子を示す。 これらに加えて、表9.1に示される通常の比較演算子は、範囲およびマルチ範囲タイプに対して利用可能である。 比較演算子は最初に範囲の下限によって順序付けし、それらが等しい場合にのみ上限を比較します。 マルチレンジ演算子は、1つが等しくなくなるまで各レンジを比較します。 これは通常、有用な全体的な順序付けをもたらさないが、演算子は、一意のインデックスが範囲上で構築されることを可能にするために提供される。

範囲演算子

anyrange @> anyrangeブール

最初の範囲には2番目の範囲が含まれますか?

int4range(2,4) @> int4range(2,3)t

anyrange @> anyelementboolean

範囲に要素が含まれていますか?

'[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10 '::timestampt

anyrange <@ anyrangeブール値

最初の範囲は2番目の範囲に含まれていますか?

int4range(2,4) <@ int4range(1,7)t

anyelement <@ anyrangeブール

要素は範囲に含まれていますか?

42 <@ int4range(1,7)f

anyrange && anyrangeブール

範囲は重複していますか? つまり、要素が共通していますか?

int8range(3,7) && int8range(4,12)t

anyrange << anyrangeブール

最初の範囲は2番目の範囲の厳密に左ですか?

int8range(1,10) << int8range(100,110)t

anyrange >> anyrangeブール

最初の範囲は厳密に2番目の範囲の右ですか?

int8range(50,60) >> int8range(20,30)t

anyrange &< anyrangeブール

最初の範囲は2番目の範囲の右側に伸びていませんか?

int8range(1,20) &< int8range(18,20)t

anyrange &> anyrangeブール

最初の範囲は2番目の範囲の左側に伸びていませんか?

int8range(7,20) &> int8range(5,10)t

anyrange -|- anyrangeブール値

範囲は隣接していますか?

numrange(1.1、2.2) -|- numrange(2.2、3.3)t

anyrange + anyrangeanyrange

範囲の和集合を計算します。 和集合が単一の範囲になるように、範囲は重複または隣接している必要があります (ただし、range_merge() を参照) 。

numrange(5,15) + numrange(10,20)[5,20)

anyrange * anyrangeanyrange

範囲の交点を計算します。

int8range(5,15) * int8range(10,20)[10,15)

anyrange-anyrangeanyrange

範囲の差を計算します。 第2の範囲は、差が単一の範囲にならないように第1の範囲に含まれてはならない。

int8range(5,15) - int8range(10,20)[5,10)

左 /右 /隣接演算子は、空の範囲が含まれる場合、常に偽を返します。つまり、空の範囲は、他の範囲に先行または後続しないと見なされます。

範囲関数テーブルは、範囲タイプで使用可能な関数を示しています。

マルチレンジ演算子

anymultirange @> anymultirangeブール値

最初のマルチレンジには2番目のマルチレンジが含まれますか?

'{[2,4)}'::int4multirange @> '{[2,3)}'::int4multiranget

anymultirange @> anyrangeブール値

マルチレンジには範囲が含まれていますか?

'{[2,4]}'::int4multirange @> int4range(2,3)t

anymultirange @> anyelementboolean

マルチレンジには要素が含まれていますか?

'{[2011-01-01,2011-03-01)}'::tsmultirange @> '2011-01-10 '::timestampt

anyrange @> anymultirangeブール

範囲にはマルチレンジが含まれていますか?

'[2,4)'::int4range @> '{[2,3)}'::int4multiranget

anymultirange <@ anymultirangeブール値

最初のマルチレンジは2番目のマルチレンジに含まれていますか?

'{[2,4)}'::int4multirange <@ '{[1,7)}'::int4multiranget

anymirange <@ anyrangeブール値

マルチレンジは範囲に含まれていますか?

'{[2,4]}'::int4multirange <@ int4range(1,7)t

anyrange <@ anymultirangeブール値

範囲はマルチレンジに含まれていますか?

int4range(2,4) <@ '{[1,7)}'::int4multiranget

anyelement <@ anymultirangeブール

要素はマルチレンジに含まれていますか?

4 <@ '{[1,7]}'::int4multiranget

anymultirange & anymultirangeブール

マルチレンジは重複していますか? つまり、要素が共通していますか?

'{[3,7)}'::int8multirange && '{[4,12)}'::int8multiranget

anymultirange & anyrangeブール

マルチレンジはその範囲と重なっていますか?

'{[3,7]}'::int8multirange && int8range(4,12)t

anyrange && anymultirangeブール

範囲はマルチレンジと重なっていますか?

int8range(3,7) && '{[4,12)}'::int8multiranget

anymultiprange << anymultiprangeブール値

最初のマルチレンジは厳密に2番目のマルチレンジの左ですか?

'{[1,10)}'::int8multirange << '{[100,110)}'::int8multiranget

anymirange << anyrangeブール

マルチレンジは厳密に範囲の左ですか?

'{[1,10)}'::int8multirange << int8range(100,110)t

anyrange << anymultirangeブール

範囲は厳密にマルチレンジの左ですか?

int8range(1,10) << '{[100,110)}'::int8multiranget

anymultirange >> anymultirangeブール値

最初のマルチレンジは厳密に2番目のマルチレンジの権利ですか?

'{[50,60)}'::int8multirange >> '{[20,30)}'::int8multiranget

anymultirange >> anyrangeブール

マルチレンジは厳密に範囲の権利ですか?

'{[50,60]}'::int8multirange >> int8range(20,30)t

anyrange >> anymultirangeブール

範囲は厳密にマルチレンジの権利ですか?

int8range(50,60) >> '{[20,30)}'::int8multiranget

anymultirange &< anymultirangeブール値

最初のマルチレンジは2番目のマルチレンジの右側に伸びていませんか?

'{[1,20)}'::int8multirange &< '{[18,20)}'::int8multiranget

anymultirange &< anyrangeブール

マルチレンジは範囲の右側に伸びていませんか?

'{[1,20]}'::int8multirange &< int8range(18,20)t

anyrange &< anymultirangeブール

範囲はマルチレンジの右側に伸びていませんか?

int8range(1,20) &< '{[18,20)}'::int8multiranget

anymultirange &> anymultirangeブール

最初のマルチレンジは2番目のマルチレンジの左側に伸びていませんか?

'{[7,20)}'::int8multirange &> '{[5,10)}'::int8multiranget

anymultirange &> anyrangeブール

マルチレンジは範囲の左側に伸びていませんか?

'{[7,20]}'::int8multirange &> int8range(5,10)t

anyrange &> anymultirangeブール

範囲はマルチレンジの左側に伸びていませんか?

int8range(7,20) &> '{[5,10)}'::int8multiranget

anymultirange -|- anymultirangeブール値

マルチレンジは隣接していますか?

'{[1.1,2.2)}'::nummultirange -|- '{[2.2,3.3)}'::nummultiranget

anymultirange -|- anyrangeブール値

マルチレンジは範囲に隣接していますか?

'{[1.1,2.2)}':: numultirange-|- numrange(2.2,3.3)t

anyrange -|- anymultirangeブール値

範囲はマルチレンジに隣接していますか?

numrange(1.1,2.2) -|- '{[2.2,3.3)}':: numultiranget

anymultirange + anymultirangeanymultirange

マルチレンジの和集合を計算します。 マルチレンジは重複または隣接する必要はない。

'{[5,10)}'::nummultirange + '{[15,20)}'::nummultirange{[5,10), [15,20)}

anymultirange * anymultirangeanymultirange

マルチレンジの交点を計算します。

'{[5,15)}'::int8multirange * '{[10,20)}'::int8multirange{[10,15)}

anymultirange-anymultirangeanymultirange

マルチレンジの差を計算します。

'{[5,20)}'::int8multirange - '{[10,15)}'::int8multirange{[5,10), [15,20)}

lower_incupper_inclower_inf、およびupper_inf関数はすべて、空の範囲またはマルチレンジに対してfalseを返します。