将 varchar 转换为数字数据类型时出现算术溢出错误 - SQL 服务器

Arithmetic overflow error converting varchar to data type numeric - SQL Server

我有一个数据类型为 numeric(18,3) 的列。用户也可以输入十进制数。我已将此文本框的最大长度设置为 18,但是当我键入 777777777777777777 时,出现此错误

Arithmetic overflow error converting varchar to data type numeric

有人能解释一下为什么会出现这个错误吗?

因为numeric(18,3)表示:18个数字在总数中,其中3小数点后 - 所以你只能在小数点前得到 15 位数字

输入18位(小数点前)显然会溢出!

如果你确实需要小数点前18位,你需要将你的列定义为numeric(21,3)

ALTER TABLE dbo.TableName 
    ALTER COLUMN MinimumValue NUMERIC(21, 3)

更多详情,read the fabulous docs