jus*_*mer 3 sql-server-2008 decimal
我decimal(4, 4)
在 MS SQL Server 2008 R2 中有一个列。如果我理解正确,这意味着:
Precision
of 4,即小数点后最多可存储四位Scale
of 4,即一共可以存储四位数字当我运行更新命令将列设置为1
( update myTable set myDecimalColumn=1
) 时,出现此错误:
将数字转换为数字数据类型时出现算术溢出错误。
我不明白这是怎么回事。 1
小数点后没有数字,只有一位长。
该Precision
规定的可存储数字,总数Scale
指定,有多少的这些数字生活的小数点后面。
DECIMAL(4,4)
因此,A有四位数字,并且都在小数点后面。这意味着您可以存储从 -0.9999 到 0.9999 的值。您不能存储 -1 或 1,因为它们在小数点前有一个数字。
查询 1:
SELECT CAST(-0.9999 as DECIMAL(4,4)),CAST(0.123456 as DECIMAL(4,4)),CAST(0.9999 as DECIMAL(4,4))
Run Code Online (Sandbox Code Playgroud)
结果:
| COLUMN_0 | COLUMN_1 | COLUMN_2 |
----------------------------------
| -0.9999 | 0.1235 | 0.9999 |
Run Code Online (Sandbox Code Playgroud)
要存储 1,您必须添加一个额外的数字,如DECIMAL(5,4)
. 这允许您存储从 -9.9999 到 9.9999 的值:
查询 2:
SELECT CAST(-9.9999 as DECIMAL(5,4)),CAST(1 as DECIMAL(5,4)),CAST(9.9999 as DECIMAL(5,4))
Run Code Online (Sandbox Code Playgroud)
结果:
| COLUMN_0 | COLUMN_1 | COLUMN_2 |
----------------------------------
| -9.9999 | 1 | 9.9999 |
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
934 次 |
最近记录: |