ST_Geometry タイプにおける SQL 実装の違い
空間 SQL(ST_Geometry)の実装は、Informix、DB2、Oracle、PostgreSQL、および SQLite の間でほとんど違いがありません。Esri(Informix および DB2 の場合は IBM も含む)は、OGC(Open Geospatial Consortium)により決定された標準を最大限まで適用できるよう取り組んできました。
ただし、2 つの例外があります。いずれも実質的に OGC 標準に違反するものではなく、データベース管理システムの実装上の軽微な違いにすぎません。
-
述語値
Informix と PostgreSQL における ST_Geometry の述語関数は true の場合は t を、false の場合は f を返しますが、DB2、Oracle、および SQLite における ST_Geometry は、true の場合は 1 が false の場合は 0 が返されます。
次の Informix SQL の例の場合、SELECT ステートメントは、建物のフットプリントを包含した建築用地について ST_Contains 関数が t を返した建物 ID だけを返します。
select bf.building_id "Building id" from buildingfootprints bf, lots where st_contains(lot,footprint) = 't';
select bf.building_id "Building id" from buildingfootprints bf, lots where sde.st_contains(lot,footprint) = 1;
-
修飾関数
Oracle のエンタープライズ ジオデータベース内のテーブルに対して SQL を実行するとき、ST_Geometry 関数をスキーマ名で修飾する必要があります。
DB2、Informix、および PostgreSQL の ST_Geometry 列を使用したテーブルに対して SQL を実行する場合も ST_Geometry 関数を修飾することができますが、修飾しなくてもかまいません。
SQLite はスキーマ名を使用しないため、ST_Geometry 列を含むテーブルに対して SQL を実行するときは ST_Geometry 関数を修飾しません。