加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:43:56 所属栏目:MsSql教程 来源:网络整理
导读:在表定义中,我看到: Latitude - varchar(50)Longitude - nvarchar(50) 很明显,我立即质疑这背后的想法 – 确信这些价值实际上是数字的.长话短说:我假设这些将是数字,十进制实际上,我们会抛弃’思想在弦中’的哲学. 现在为了我的困境,我只是继续输入: Latit
在表定义中,我看到:
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个字节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读