2011-03-23 22 views
2

我正在尝试学习如何使用新的SqlServer 2008管理的空间类型对记录进行半径搜索和做地理空间计算的方法(地理)。我下面这个网页上的样本:SQLServer空间查询返回错误在预计条件的上下文中指定的非布尔类型的表达式,'''

http://msdn.microsoft.com/en-us/magazine/dd434647.aspx

我特别想这样做样本:

-- or declare POINT for "downtown Seattle" 
-- 1609.344 meters per mile 
DECLARE @Seattle geography = 'POLYGON(....)'; SELECT c.customerid FROM 
customer c WHERE c.geog.STIntersects(@Seattle.STBuffer(10 * 1609.344)); 

然而,即使运行查询(或当我运行quer-前 - 编译和运行时错误)我收到以下错误消息:

An expression of non-boolean type specified in a context where a condition is expected, near ')' 

我真的很困惑这一点。我没有做完全相同的查询(我正在使用自己的数据和地理栏),但它与样本几乎完全相同。我正在运行Sql SErver 2008 SP2标准版64位。当我输入查询时,它使用STIntersection方法的intellisense并显示(other_geography地理)样本,以便知道该方法存在。我正确地关闭括号并用分号分隔表达式,但我无法弄清楚为什么我得到错误。谷歌搜索没有奏效。

有什么想法?

赛斯

回答

5

STIntersects返回0或1试试这个:

WHERE c.geog.STIntersects(@Seattle.STBuffer(10 * 1609.344)) = 1 
+0

这做到了。谢谢您的帮助 – 2011-04-05 02:35:58

相关问题