看这里:http://msdn.microsoft.com/en-us/library/aa258832(SQL.80).aspx http://msdn.microsoft.com/en-us/library/aa258832(SQL.80).aspx
小数[(p[ s])]
p(精度)指定小数位数的最大总数
可以存储,都在左侧
和小数点右边。
精度必须是从 1 开始的值
通过最大精度。这
最大精度为 38。默认值
精度为18。
s(比例)指定可以显示的最大小数位数
存储在小数点右边
观点。比例必须是从 0 开始的值
通过 p.只能指定比例
如果指定精度。默认
比例尺为 0;因此,0
使用时:decimal(p,s)
, 考虑到p
作为您要存储的总位数(无论小数点左边还是右边),以及s
其中有多少p
数字应位于小数点右侧。
DECIMAL(10,5)= 12345.12345
DECIMAL(10,2)= 12345678.12
DECIMAL(10,10)= .1234567891
DECIMAL(11,10)= 1.1234567891
您的示例代码失败:
SELECT CAST(123456789 as decimal(9,1))
因为:
9=精度(小数点左右的总位数)
1=scale(小数点右边的总位数)
(9-1)=8(小数点左边的总位数)
而您的值 123456789 需要小数点左边 9 位数字。你会需要decimal(10,1)
要不就decimal(9,0)