Within 演算子

Within は、ポリゴンなどのオブジェクトに、他方のジオメトリの全体が含まれているかどうかを評価する Boolean 空間演算子です。

例 1:

SELECT city FROM table WHERE obj Within <geometry>

データ ソース プロバイダが Within をサポートしている場合、クエリ全体がデータ ソース プロバイダに委任されます。

データ ソース プロバイダが Within をサポートしない場合、クエリは EnvelopesIntersect に変換され、次のように委任されます。

SELECT city, obj FROM table WHERE obj EnvelopesIntersect <geometry>

Spectrum Spatial は、データ ソース プロバイダが返した結果を使って Within を評価します。

SELECT city FROM <results of the delegation> WHERE obj Within <geometry>

例 2:

SELECT city FROM table WHERE <geometry> Within obj

この例は、最初の例とは反対です。これは、オペランドを入れ替えて Contains 演算子を反転したものです。見てのとおり、このクエリは WHERE 句の規則を満たしません。Boolean 演算子は WHERE <column> operator <geometry> という形式でなければなりません。このクエリは Contains 操作に書き換えられ、Within の規則に従って委任されます。

SELECT city FROM table WHERE obj Contains <geometry>