2015-12-25 136 views
0

我有這樣SQL Server; STDistance功能更新語句

事件表表(IsFar ,位置地理

用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 

誰都可以解釋爲什麼這不起作用?

回答

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) 

在更換01根據您的需要case聲明

+0

好主意,但'IsFar'是類型'bit'不'float' –

+0

@HosseinNarimaniRad - 現在檢查 –

+0

是的,它解決了問題,但我沒想到這麼多的代碼和我米驚訝爲什麼SQL只是不支持該語法 –