我有一张这样的表
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
任何人都可以解释为什么这不起作用?
答案 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
声明中替换1
和case