SQLServer空间查询返回错误在预期条件的上下文中指定的非布尔类型的表达式,在')'附近

Set*_*man 2 syntax geography geospatial sql-server-2008

我正在尝试学习如何使用新的SqlServer 2008管理的空间类型和方法(地理)对记录进行半径搜索以进行地理空间计算.我正在关注此网页上的示例:

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));
Run Code Online (Sandbox Code Playgroud)

但是,甚至在运行查询之前(或者当我运行查询时 - 编译和运行时错误)我收到以下错误消息:

An expression of non-boolean type specified in a context where a condition is expected, near ')'
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

赛斯

Mar*_*ers 5

STIntersects返回0或1.试试这个:

WHERE c.geog.STIntersects(@Seattle.STBuffer(10 * 1609.344)) = 1
Run Code Online (Sandbox Code Playgroud)