ST_Within 使用兩個幾何物件並傳回 1 (TRUE) (若第二個物件包含第一個物件);否則會傳回 0 (FALSE)。
語法
db2gse.ST_Within(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
回覆類型
Integer
範例
在下例中會建立兩個表格。第一個表格 BUILDINGFOOTPRINTS 含有都市的建築物覆蓋區。 第二個表格 LOTS 含有都市的用地。都市工程師想要確定全部建築物覆蓋區都在它們的用地內。
在這兩個表格中,多重多邊形資料類型儲存建築物覆蓋區和用地的幾何。 資料庫設計者為這兩個形狀選取多重多邊形,因為用地可以被自然地形 (如河流隔開),建築物覆蓋區通常可以由一些建築物組成。
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon); CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon );
使用下列 SELECT 陳述式時,都市工程師首先選取不完全位於一塊用地的建築物。
SELECT building_id FROM BUILDINGFOOTPRINTS, LOTS WHERE db2gse.ST_Within(footprint,lot) = 0;
雖然第一個查詢會提供覆蓋區在用地多邊形外面的全部 BUILDING_ID 列示, 但它不會判斷是否有將正確 lot_id 指定給其餘覆蓋區。 第二個 SELECT 陳述式則對 BUILDINGFOOTPRINTS 表格的 LOT_ID 直欄執行資料完整性檢查。
SELECT bf.building_id "building id", bf.lot_id "buildings lot_id", LOTS.lot_id "LOTS lot_id" FROM BUILDINGFOOTPRINTS bf, LOTS WHERE db2gse.ST_Within(footprint,lot) = 1 AND LOTS.lot_id <> bf.lot_id;