SQLServer Пространственный запрос возвращает ошибку Выражение не булева типа, указанное в контексте, где ожидается условие, рядом с ')' - PullRequest
2 голосов
/ 24 марта 2011

Я пытаюсь узнать, как выполнять поиск по радиусу в записях, используя новый управляемый пространственный тип и методы (географию) 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));

Однако, даже до тогопри выполнении запроса (или когда я запускаю запрос - ошибка как компиляции, так и ошибки времени выполнения), я получаю следующее сообщение об ошибке:

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

Я действительно сбит с толку этим.Я не делаю точно такой же запрос (я использую свои собственные данные со столбцом географии), но он почти идентичен образцу.Я использую 64-разрядную версию Sql SErver 2008 SP2 Standard Edition.Когда я набираю запрос, он использует intellisense для метода STIntersection и показывает образец (other_geography geography), чтобы он знал, что метод существует.Я правильно закрываю скобки и разделяю выражение точкой с запятой, но не могу понять, почему я получаю ошибку.Поиск в Google не сработал.

Есть мысли?

Сет

1 Ответ

5 голосов
/ 24 марта 2011

STIntersects возвращает 0 или 1. Попробуйте это:

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