我的查询包含这样的代码。
set @CurrentPatchDeployPercentage = convert(numeric(5,2), (isnull(@LastMonthDeployCount, 0)* 100.00 / isnull(nullif(@TotalMachines, 0), 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