【问题标题】:Arithmetic overflow error converting int to data type numeric将 int 转换为数据类型 numeric 的算术溢出错误
【发布时间】:2011-04-21 22:08:01
【问题描述】:

如何在 T-SQL 中修复此错误?以下行成功执行:

SET @dPERCENT_QC_COMPLETED = CASE WHEN @NUM_QC_RECEIVED = 0 
                               THEN 0 
                               ELSE @NUM_QC_COMPLETED / @NUM_QC_RECEIVED 
                             END

但是这一行失败,错误代码如下:

SET @dPERCENT_QC_COMPLETED = CASE WHEN @NUM_QC_RECEIVED = 0
                               THEN 0
                               ELSE (100 * @NUM_QC_COMPLETED / @NUM_QC_RECEIVED)
                             END

消息 8115,第 16 级,状态 8,第 73 行 将 int 转换为数据类型 numeric 的算术溢出错误。

@dPERCENT_QC_COMPLETED 是一个小数 (2)。其他变量是整数。我认为的问题是当前这些其他整数值 = 1,所以这个表达式的计算结果为 1。

【问题讨论】:

    标签: tsql


    【解决方案1】:

    decimal(2) 永远无法应付100 完成百分比。你为什么使用那个数据类型?

    【讨论】:

    • 哦,我没看到!我忘了我乘以 100。你是对的;这解决了它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多