Search code examples
sql-server-2008syntaxgeospatialgeography

SQLServer Spatial query is returning error An expression of non-boolean type specified in a context where a condition is expected, near ')'


I am trying to learn how to do radius search on records using the new SqlServer 2008 managed spacial type and methods (geography) for doing geospatial calculations. I am following the samples on this web page:

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

I am specifically trying to do this sample:

-- 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));

However, even before running the query (or when I run the quer--both compile and runtime error)I am getting the following error message:

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

I am really baffled by this. I am not doing exactly the same query (I am using my own data with a geography column) but it is almost identical to the sample. I am running Sql SErver 2008 SP2 Standard Edition 64-bit. When I type the query it uses intellisense for the STIntersection method and shows a (other_geography geography) sample so it knows that the method exists. I am properly closing the parentheses and delimiting the expression with a semi-colon but I cannot figure out why I am getting the error. Googling has not worked.

Any thoughts?

Seth


Solution

  • STIntersects returns 0 or 1. Try this:

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