将int转换为数据类型numeric的算术溢出错误

时间:2011-04-21 22:08:02

标签: tsql

如何在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

Msg 8115,Level 16,State 8,Line 73 算术溢出错误将int转换为数据类型numeric。

@dPERCENT_QC_COMPLETED是小数(2)。其他变量是整数。问题我认为目前这些其他整数值= 1,因此该表达式的计算结果为1。

1 个答案:

答案 0 :(得分:1)

decimal(2)永远无法应对100%完成率。你为什么使用那种数据类型?