在表定义中,我看到:
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个字节.