【发布时间】:2019-01-03 13:44:51
【问题描述】:
我有一列在表中定义如下
td_long_shr_qty (numeric(18,6), null)
当我更新列时出现错误
UPDATE
fact
SET
td_long_shr_qty = 1720187931245.8069
WHERE
id = 29
将数字转换为数字数据类型时出现算术溢出错误。
这个号码1720187931245.8069 是否有任何问题,因为它小于 18 精度,为什么我会收到此错误。请帮助。
【问题讨论】:
-
为什么你向我们展示了
td_long_shr的列定义,但你的查询正在更新td_long_shr_qty?您是否查看了错误的列定义? -
抱歉我已经更新了列名
-
1720187931245 超过 12 位。 numeric(18,6) 表示共18位,其中小数点前12位,小数点后6位。
-
numeric(18,6)是“18 位,其中 6 位出现在小数点后”。你不能把你给我们看的号码放在这样的类型中。 -
不,不是。您定义的精度为 18,比例为 6。您尝试输入的值的精度为 17,比例为 4。docs.microsoft.com/en-us/sql/t-sql/data-types/…
标签: sql sql-server tsql