更新语句 - 地理列 - sql server

时间:2011-11-25 09:18:29

标签: sql sql-server-2008

更新sql server中的地理列与常规字段(varchar ....)不同。能否请您提供样本声明。谢谢。

2 个答案:

答案 0 :(得分:13)

我不确定这是否是您正在寻找的答案 - 但正如我所说,主要的区别在于,在更新“常规字段”时,您通常会直接提供新值 - 例如:

UPDATE mytable SET name = 'John' WHERE id = 1

更新地理列时,您可能无法直接提供该值(因为它是一个非常长的十六进制数字,它对地理信息进行编码)但您需要从其他一些值(可以但不是必须是同一个表的列),例如:

UPDATE mytable SET gps=geography::STPointFromText('POINT(' + lng + ' ' + lat + ')', 4326) 

其中lnglat是varchar值,以“人类可读”的格式指定GPS坐标(如lat = '48.955790'lng = '20.524500') - 在这种情况下,它们是也是mytable的列。

答案 1 :(得分:0)

如果您将纬度经度作为小数,则可以更新地理列,如下所示:

DECLARE @latitude DECIMAL(15,6)
    ,@longitude DECIMAL(15,6);

SET @latitude = 29.938580;
SET @longitude = -81.337384;

UPDATE Properties
SET Geog = GEOGRAPHY::Point(@latitude, @longitude, 4326)
WHERE PropertyID = 858;