算术溢出错误,将数值转换为数值类型的数值,但值短于指定的精度

时间:2019-01-03 13:44:52

标签: sql sql-server tsql

我有一列在表格中定义如下

td_long_shr_qty (numeric(18,6), null)

当我更新列时出现错误

UPDATE
    fact
SET
    td_long_shr_qty = 1720187931245.8069
WHERE
    id = 29

将数字转换为数据类型数字的算术溢出错误。

此数字1720187931245.8069是否有任何问题,因为它少于精度18,为什么会出现此错误。请帮助。

1 个答案:

答案 0 :(得分:10)

NUMERIC(18, 6)的含义是总共18个精度位,其中6个在小数点的处(如果存在)。因此,这意味着该类型可以容纳的最大数量为:

 999999999999.999999
1720187931245.8069

我故意从下面的查询中粘贴了您的电话号码,并与之对应,并取其最大可能值。显而易见,它已经超过了NUMERIC(18, 6)的容量。