SQL Server 2008空间数据选择查询

时间:2012-07-04 12:58:44

标签: sql-server-2008 spatial-query

我正在开发一个维护SQL数据库的项目。在这个数据库中,我有一个名为AirportZone的表,其中一个属性名为“area”,类型为geometry。此外,我维护一个表OfferRequest,其中包含一个名为“location”的属性类型为geography。由于我想查看在机场区域是否发生OfferRequest,我想定义一个复杂的SQL查询,该查询将返回从某个区域内的用户发出的所有请求。类似的东西:

select OfferRequest.offer_id from OfferRequest, AirportZone 
where @tmp_geo is geography::STGeomFromText(CAST(AirportZone.area as varchar(max)), 4326)
and @tmp_geo.STIntersects(OfferRequest.location) = 1 and AirportZone.name = 'given_name'

显然这个查询是错误的,因为变量@tmp_geo(我希望它是地理类型)。有没有办法做到这一点,还是我应该定义一个while循环?

谢谢

1 个答案:

答案 0 :(得分:0)

上述查询可以实现为:

DECLARE @tmp_geo geometry;
SET @tmp_geo = geography::STGeomFromText(CAST(AirportZone.area as varchar(max));
SELECT OfferRequest.offer_id FROM OfferRequest, AirportZone WHERE
@tmp_geo.STIntersects(OfferRequest.location) = 1 AND AirportZone.name = 'given_name';