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

declare @decimal decimal(4,3) = 10.0

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

msg 8115 level 16 state 8 line 1 arithmetic overflow error converting int to data type numeric

即使这个声明 @decimal decimal(4,3) = 10.0 也给出了这个错误:

msg 8115 level 16 state 8 line 1 arithmetic overflow error converting numeric to data type numeric

提前致谢

一个小数(4,3)共有4位,小数点后3位。请参阅 SQL 服务器在线文档中的 decimal and numeric,特别是关于精度和比例的内容。

它将保存从 -9.999 到 +9.999 的值。要支持值 10,您可以使用 decimal(5,3).

正如 Rhys 所回答的,一个 decimal(m,n) 总共可以存储 m 位数字,小数点右边有 n 位数字。

所以 Decimal(4,3) 的可能取值范围是 -9.999 到 +9.999,总共 4 位,小数点右边 3 位。要存储 10,您必须使用 Decimal(5,3) 但这将允许值高达 99.999