2013-01-15 33 views
1

由于称为STContains的地理空间函数仅在SQL Server 2012中可用,因此可以使用类似的函数在SQL Sever 2008中获得相同或相似的结果?与SQL Server 2008中STContains类似的功能

STIntersects是否可行选项?

干杯!

+0

是什么让你觉得是不是可以在2008年? [文档](http://msdn.microsoft.com/en-us/library/bb933904(v = sql.100).aspx)说这是。 – Pondlife

回答

1

STContains是SQL Server提供2008

DECLARE @s0 AS GEOMETRY = 'POLYGON((4 4, 7 4, 7 7, 4 7 ,4 4))' 
DECLARE @s1 AS GEOMETRY = 'POLYGON((5 4.2, 6 4.2, 6 5, 5 5, 5 4.2))' 

SELECT * 
FROM (
    SELECT @s0 AS 'Geo', 'S0' as 'Labels' 
    UNION ALL SELECT @s1, 'S1' 
) AS A 
WHERE A.Geo.STContains(@S1) = 1 

See SQL-Fiddle-Demo.

+0

嘿Nico!我猜混乱是因为我在STContains函数中使用了地理类型参数,所以我最终使用了STIntersect: – ostati

+0

这是如何在空间表中使用现有功能时工作的。不是每个查询都从头创建几何图形? – DPSSpatial

+0

OP在他们的评论中引用了这个事实,但是你可能想要澄清一下'STContains'只存在于SQL 2008中的** GEOMETRY **数据类型中,而不是** GEOGRPAHY **数据类型。在我遇到的大多数情况下,“STIntersect”似乎是一个很好的选择。 –