2011-08-01 83 views

回答

17

随着case语句:

CASE 
    WHEN ((@Latitude IS NOT NULL) AND (@Longitude IS NOT NULL)) 
    THEN geography::Point(@Latitude, @Longitude, 4326) 
    ELSE NULL   
END 

或者如果变体:

DECLARE @Location geography = NULL 
IF (@Latitude IS NOT NULL AND @Longitude IS NOT NULL) 
    SET @Location = geography::Point(@Latitude, @Longitude, 4326); 
2

我已经找到解决办法由自己:

geography::STPointFromText(
    'POINT(' + CAST(@lon AS VARCHAR(20)) + ' ' + CAST(@lat AS VARCHAR(20)) + ')', 4326) 
+1

我不喜欢这样。首先你转换为varchar,然后是字符串连接,然后转换为point。 – Anderson

+1

@安德森,任何替代品? –

+0

是的。 (填充15个字符) – Anderson