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

时间:2017-02-07 12:09:00

标签: sql-server sql-server-2008

我的查询包含这样的代码。

set @CurrentPatchDeployPercentage = convert(numeric(5,2), (isnull(@LastMonthDeployCount, 0)* 100.00 / isnull(nullif(@TotalMachines, 0), 1)))

但是当我跑步时我会收到以下错误,请帮助。

  

将数字转换为数据类型数字

的算术溢出错误

1 个答案:

答案 0 :(得分:1)

你确定这是你想要的百分比吗?你应该像这样在分裂后移动你的*100.00吗?

rextester:http://rextester.com/NNOEH44668

declare @LastMonthDeployCount numeric(7,2) = 10.00;
declare @TotalMachines numeric (7,2) = 100.00;

declare @CurrentPatchDeployPercentage numeric(9,2);
    set @CurrentPatchDeployPercentage = 
      convert(numeric(5,2), 
        ( isnull(@LastMonthDeployCount, 0)
          / 
          isnull(nullif(@TotalMachines, 0), 1.0)
          ) * 100.00
        );

select @CurrentPatchDeployPercentage;

另外,请确保您的@CurrentPatchDeployPercentage数据类型支持@LastMonthDeployCount *100.00@TotalMachines = 0的最高数量,并更改为null,然后更改为1 }。

Decimal/Numeric Data Type - MSDN

Precision  Storage bytes
---------  --------------
1 - 9      5
10-19      9
20-28      13
29-38      17