【发布时间】:2011-06-25 16:13:15
【问题描述】:
在我看到的表定义中:
Latitude -> varchar(50)
Longitude -> nvarchar(50)
显然,我立即质疑这背后的想法 - 肯定这些值实际上是本质上的数字。长话短说:我假设这些将是数字的,实际上是十进制的,我们将放弃“思维在字符串中”的哲学。
现在对于我的困境来说,我只是继续输入:
Latitude -> decimal(2, 4)
但请稍等,4 不对,对吧?正确的。所以我想在意识到6 或8 可能不会削减它之前(我可能会在一瞬间补充)之前我已经达到了门槛。所以,第一件事就是……
我坚持我们甚至要这样做是对的吗?如果是这样……
应该将这些值存储到什么精度以确保我们可以持久保存要插入的整个值?例如,规范中有没有预定义的东西?
我不只是想使用像Latitude -> decimal(2, 16) 这样的东西,因为原则上它和decimal(2, 2) 一样有缺陷。并且专门针对经度出现了类似的问题,但我假设一个答案对另一个就足够了,即decimal(3, answer)。
我们使用的是 MSSQL Server 2005。
看来我是通过手动经验自学 SQL Server,因此使这个问题的某些部分变得无关紧要:无论如何,我只能使用 decimal(x, max(x)) 而不是 decimal(x, y)!将保留问题以供输入。
【问题讨论】:
-
您使用的是什么版本的 SQL Server? 2008 内置了一些原生地理空间类型,适用于笛卡尔和椭圆体场景。它们分别称为几何和地理。
-
然后使用十进制类型,请参阅 Cade Roux 的链接
标签: sql sql-server types geocoding