SQL Server中经度/纬度值的数据库存储:decimal(2,?)

前端之家收集整理的这篇文章主要介绍了SQL Server中经度/纬度值的数据库存储:decimal(2,?)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在表定义中,我看到:
Latitude     ->    varchar(50)
Longitude    ->    nvarchar(50)

很明显,我立即质疑这背后的想法 – 确信这些价值实际上是数字的.长话短说:我假设这些将是数字,十进制实际上,我们会抛弃’思想在弦中’的哲学.

现在为了我的困境,我只是继续输入:

Latitude    ->    decimal(2,4)

但坚持一秒,4不对,对吗?对.所以我认为我已经达到了阈值,然后才意识到(在一瞬间我可以补充)6或8也可能不会削减它.所以,首先要做的事情……

我是否正确坚持我们甚至这样做?如果是这样…

要存储这些值的精度,以确保我们可以保留要插入的整个值?例如,是否有任何预定义规范?

我不只是想使用Latitude这样的东西 – >十进制(2,16)原则上只是因为它与十进制(2,2)一样有缺陷.类似的问题出现在经度上,但我假设一个人的答案足以满足另一个,即十进制(3,答案).

我们正在使用MSsql Server 2005.

看来我通过手工经验教育自己使用sql Server,因此渲染这个问题的部分无关紧要:我只能使用十进制(x,max(x))而不是十进制(x,y)!将问题保留为输入.

解决方法

十进制(2,4)表示精度的2位总数,小数点后4位. sql Server不允许您这样做,但我认为这意味着您可以存储-0.0099到0.0099之间的值.

我推荐十进制(9,6).这将在赤道处以低至约1/6英寸的精度存储.使用9或更小的精度需要5个字节的存储空间,使用10-19需要9个字节.

原文链接:https://www.f2er.com/mssql/76517.html

猜你在找的MsSQL相关文章