我对SQL Server 2008 R2 中的DECIMAL
(也许)类型有一个非常简单的问题。NUMERIC
MSDN 说:
(scale) 小数点右侧可以存储的最大小数位数。比例必须是从 0 到 p 的值。
我理解以下方式:
- 如果我有
DECIMAL(10, 5)
- 我可以存储 12345.12345 或 12345678.91。 - 如果我有
DECIMAL(5, 5)
- 我可以有 12345 或 1234.5 或 1.2345 等...
清楚吗?
但我收到了这个错误信息:
SELECT CAST(2.8514 AS DECIMAL(5,5))
将数字转换为数字数据类型的算术溢出错误。
我认为 5,5 意味着我最多可以有 5 位数字,并且最多可以有 5 位小数点。
正如我所尝试的:
SELECT CAST(12.851 AS DECIMAL(6,5)) - overflows too
然而
SELECT CAST(1.23456 AS DECIMAL(6,5)) - is OK.
那么真相是什么?
DECIMAL(a,b)
说我最多可以有一个数字,其中只有 b 位在小数点的右边(在小数点的左边还有 ab)?
我对到处复制的文档中的声明感到非常困惑。请花点时间给我解释一下这个简单的事情。
非常感谢!