SQL Server; STDistance函数在更新语句中不起作用

时间:2015-12-25 16:24:25

标签: sql sql-server spatial sqlgeography

我有一张这样的表

EventTable (IsFar ,位置地理位置

Select语句没有问题: 我可以简单地运行它,没有错误:

DECLARE @center AS  GEOGRAPHY = GEOGRAPHY::Point(50, -160, 4326);        
SELECT * FROM EventTable WHERE  @center.STDistance(Location) > 100000

不使用Update语句但是当我想根据某个点与某个点的距离更新IsFar列时,它会抛出异常

  

'>'

附近的语法不正确

以下是代码:

DECLARE @center AS  GEOGRAPHY = GEOGRAPHY::Point(50, -160, 4326);        
UPDATE EventTable SET IsFar = @center.STDistance(Location) > 100000

任何人都可以解释为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

您需要添加Where子句

UPDATE EventTable SET IsFar = @center.STDistance(Location) 
where @center.STDistance(Location) > 100000

根据您的评论

UPDATE eventtable 
SET    isfar = CASE 
                 WHEN @center.STDistance(location) > 100000 THEN 1 
                 ELSE 0 
               END 

如果您使用Sql Server 2012+,则可以使用IIF

UPDATE eventtable 
SET    isfar = IIF(@center.STDistance(location) > 100000, 1, 0)

根据您的要求,在0声明中替换1case