它与sql server中的地理栏更新不同于常规字段(varchar ....)。你能否提供一份样本声明来做到这一点。谢谢。更新声明 - 地理栏 - sql服务器
6
A
回答
11
我不确定这是否是您正在寻找的答案 - 但正如我所说,主要区别在于,更新“常规字段”时,通常会直接提供新值 - 例如:
UPDATE mytable SET name = 'John' WHERE id = 1
当更新地理列时,您可能无法直接提供值(因为它是一个非常长的十六进制数字,它编码地理信息),但您需要从其他值计算它(可以,但可以不必是同一表的列),例如:
UPDATE mytable SET gps=geography::STPointFromText('POINT(' + lng + ' ' + lat + ')', 4326)
其中lng
和lat
是以“人类可读”格式指定GPS坐标的varchar值(如lat = '48.955790'
,lng = '20.524500'
) - 在这种情况下,它们也是mytable
的列。
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;
相关问题
- 1. 基于选择SQL服务器的更新声明
- 2. SQL更新声明
- 3. SQL服务器 - 与声明的变量
- 4. SQL服务器机箱声明
- 5. SQL Server更新声明
- 6. SQL大写更新声明
- 7. 内联SQL更新声明
- 8. SQL服务器(更新)
- 9. 更新SQL服务器
- 10. 更新列SQL服务器
- 11. SQL服务器更新
- 12. Android更新地理栅栏
- 13. MS Access中的SQL更新声明
- 14. SQL服务器的副本ID的更新等栏目
- 15. 更新从服务器(MS SQL Server2005中)
- 16. SQL服务器链接的服务器更新
- 17. 跟踪SQL服务器更新
- 18. SQL服务器更新/活动列
- 19. 更好地理解属性声明
- 20. 跨链接服务器的SQL更新
- 21. 从MS SQL服务器更新MySql
- 22. 更改SQL服务器本地名称
- 23. 声明Serve HTTP服务器的方法
- 24. 用新的实例声明Angular服务
- 25. SQL服务器选择更新
- 26. SQL更新已具有声明组和
- 27. SQL更新声明使用如果当
- 28. SQL更新声明(语法)错误
- 29. SQL Zend框架更新声明
- 30. OSGi声明性服务引用非声明性服务
感谢这个,我不知道这些地理数据类型是如何工作的。显然,Sql Server 2008 R2中的导入/导出向导并不理解 - 它不会让我将包含此列的表导入另一个数据库。 –
几年后,我回到了这个答案,第二个猜测LONG参数的LONG参数顺序为POINT()调用。这是正确的顺序,它有趣的是MS使用LONG/lat,而不是我们大多数人谈论的方式,它是以经/纬度表示的。更多信息在这里http://stackoverflow.com/q/27297113/194872 –