我真的只是在sql Server 2008 R2中对DECIMAL(也许NUMERIC)类型提出质疑.
MSDN说:
(scale)
The maximum number of decimal digits that can be stored to the right of the decimal point. Scale must be a value from 0 through p.
我理解如下:
>如果我有DECIMAL(10,5) – 我可以存储12345.12345或12345678.91.
>如果我有DECIMAL(5,5) – 我可以有12345或1234.5或1.2345等…
清楚吗?
但是我收到这个错误信息:
SELECT CAST(2.8514 AS DECIMAL(5,5))
Arithmetic overflow error converting numeric to data type numeric.
我认为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)表示我可以有一个数字,并且它们中的一个是小数点的右边(左边的那个a-b到dec点)?
我真的很困惑doc中的声明,它被复制到处.请花一点时间解释一下这个简单的事情.
多谢谢!