声明@decimal decimal(4,3)= 10.0

时间:2015-03-03 16:01:19

标签: sql-server decimal

任何人都可以告诉我为什么:声明@decimal decimal(4,3)= 10在SQL SERVER中给我一个错误:

  

msg 8115 16级状态8行1算术溢出错误将int转换为数据类型numeric

即使这声明@decimal decimal(4,3)= 10.0也会出现此错误:

  

msg 8115 16级状态8行1算术溢出错误将数字转换为数据类型数字

提前致谢

2 个答案:

答案 0 :(得分:3)

小数(4,3)总共有4位数,小数点后面有3位数。请参阅SQL Server在线文档中的decimal and numeric,尤其是精度和比例。

它将保存-9.999到+9.999之间的值。要支持值10,您可以使用小数(5,3)。

答案 1 :(得分:1)

正如Rhys所回答的那样,十进制(m,n)可以存储小数点右边n位数的总共m位数。

因此,十进制(4,3)的可能值范围为-9.999到+9.999,总共为4位,小数点右边为3。存储10你必须使用十进制(5,3),但这将允许值高达99.999