ST_Within toma dos objetos geometría y devuelve 1 (TRUE) si el primer objeto queda completamente dentro del segundo y 0 (FALSE) si no es así.
Sintaxis
db2gse.ST_Within(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Tipo devuelto
Entero
Ejemplos
En el ejemplo siguiente, se crean dos tablas. La primera tabla, BUILDINGFOOTPRINTS, contiene las zonas edificadas de una ciudad. La segunda tabla, LOTS, contiene las parcelas de la ciudad. El ingeniero municipal desea asegurarse de que todas las áreas edificadas quedan completamente dentro de sus parcelas.
En ambas tablas, el tipo de datos varios polígonos almacena la geometría de las áreas edificadas y sus parcelas. El diseñador de la base de datos ha seleccionado el tipo varios polígonos para ambas funciones puesto que las parcelas pueden estar separadas por funciones naturales, como un río, y las áreas edificadas pueden costar de varios edificios.
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon); CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon );
Mediante la siguiente sentencia SELECT, el ingeniero municipal selecciona primero los edificios que no quedan completamente dentro de una parcela.
SELECT building_id FROM BUILDINGFOOTPRINTS, LOTS WHERE db2gse.ST_Within(footprint,lot) = 0;
Aunque la primera consulta ofrecerá una lista de todos los BUILDING_ID que tienen áreas edificadas fuera de un polígono de parcela, no determinará si el resto tienen asignado el lot_id correcto. Esta segunda sentencia SELECT realiza una comprobación de integridad de los datos de la columna LOT_ID de la tabla BUILDINGFOOTPRINTS.
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;