SQL服务器; STDistance 函数在更新语句中不起作用

SQL Server; STDistance function not working in update statements

我有一个table这样的

EventTable (IsFar bit, Location geography)

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

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

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

Incorrect syntax near '>'.

代码如下:

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

谁能解释为什么这不起作用?

您需要添加 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)

根据您的要求替换 case 语句中的 01