我收到算术溢出错误,将varchar转换为数值类型的数据。在我的存储过程中,虽然只有在必须进行计算的时候。这是我的代码,我使用的转换似乎还是有问题。
set @Text = @Text + 'Something:' +
(select case when s.ATF = '' then '0'
else Convert(varchar,100 *((s.ATF *1.00) /
(s.Total * 1.00))) + '%'
end
from Maintenance.dbo.stats s
where s.ID = @ID) + CHAR(13) + CHAR(10)
谢谢!
问题是您将avarchar
乘以一个数值。这将强制将隐式转换为数字类型。您应该明确指定转换。我选择了,decimal(38,6)
但是您可以更改它。
set @Text = @Text + 'Something:' +
(select case when s.ATF = '' then '0'
else Convert(varchar, 100 * cast(s.ATF as decimal(38,6)) /
cast(s.Total as decimal(38,6))) + '%'
end
from Maintenance.dbo.stats s
where s.ID = @ID) + CHAR(13) + CHAR(10)
您可以在这个简单的示例上看到这种错误的转换是如何工作的:
declare @x as varchar(50) = '11'
select @x * 1.00
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句