日期:2014-05-16  浏览次数:20446 次

各位大神,求教一个基础的问题。。关于decimal这个数据类型
本帖最后由 maotuanerqiu 于 2014-04-28 22:44:13 编辑
整数位数在1~9位时占5个字节,10~19位时是9个字节对吗?
那我输个数是5位的显示的是9个字节是咋回事啊?


------解决方案--------------------
请问LZ所看教程是哪来的喔? 讲得不太准确.
建议参考官方文档: http://msdn.microsoft.com/zh-cn/library/ms187746(v=sql.105).aspx
首先,须明确精度的概念
p(精度): 最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。

其次,对应的字节数查该表.
精度             存储字节数
----------       -------------------
1 - 9                 5
10-19              9
... 

接下来,就可以解释LZ的测试结果了.
declare @a decimal(10,4)
select @a=999999.9999   --> 精度=小数点左边位数+小数点右边的位数=6+4=10
select datalength(@a)
查上表,精度10-19时,存储字节数为9.