首页 > 解决方案 > 将数字转换为数字数据类型的算术溢出错误,但值小于指定的精度

问题描述

我有一列在表中定义如下

td_long_shr_qty (numeric(18,6), null)

当我更新列时出现错误

UPDATE
    fact
SET
    td_long_shr_qty = 1720187931245.8069
WHERE
    id = 29

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

这个数字有什么问题1720187931245.8069吗,因为它小于精确度 18 为什么我会收到这个错误。请帮助。

标签: sqlsql-servertsql

解决方案


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

 999999999999.999999
1720187931245.8069

我特意从下面的查询中粘贴了您的号码,并与最大可能的值对齐。您应该很清楚地看到它超过了NUMERIC(18, 6).


推荐阅读