dot*_*cks 6 sql sql-server-2008
更新sql server中的geography列与常规字段(varchar ....)不同.能否请您提供样本声明.谢谢.
Hel*_*ena 13
我不确定这是否是您正在寻找的答案 - 但正如我所说,主要区别在于更新"常规字段"时,您通常直接提供新值 - 例如:
UPDATE mytable SET name = 'John' WHERE id = 1
Run Code Online (Sandbox Code Playgroud)
更新地理列时,您可能无法直接提供该值(因为它是一个非常长的十六进制数字,它编码地理信息)但您需要从其他一些值计算它(可以但不一定是同一个表的列),例如:
UPDATE mytable SET gps=geography::STPointFromText('POINT(' + lng + ' ' + lat + ')', 4326)
Run Code Online (Sandbox Code Playgroud)
其中lng和lat是varchar值以"人类可读"格式指定GPS坐标(例如lat = '48.955790',lng = '20.524500') - 在这种情况下,它们也是列的mytable.
如果纬度和经度为小数,则可以更新地理列,如下所示:
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;
Run Code Online (Sandbox Code Playgroud)