收到错误:
遇到零错误
我需要在SQL Server中转换类型varchar
,以便能够按类型money
进行划分。我在论坛上搜索了一堆,似乎无法找到有效的答案。以下是我目前的情况。完成所有操作后,我需要在报告中以百分比显示答案。感谢任何能提供帮助的人!
cast((CONVERT(DECIMAL, ((OEJUD.Text7/OEJUD.Money1) * 100)))AS varchar(20)) + '%' AS '% Prog Billed'
答案 0 :(得分:1)
这应该有效
select CONVERT(VARCHAR(20),((cast(OEJUD.Text7 as float)/NULLIF(cast(OEJUD.Money1 as float),0))*100))
检查这个sql,然后尝试
CONVERT(VARCHAR(20),((cast(OEJUD.Text7 as float)/NULLIF(cast(OEJUD.Money1 as float),0))*100)) + '%' AS '% Prog Billed'
答案 1 :(得分:1)
虽然NullIf代码有效,但您可能需要根据业务需求返回除null之外的其他内容,在这种情况下,您需要一个案例陈述
case when OEJUD.Money1 is null or OEJUD.Money1= 0 or isnumeric(EJUD.Text7) = 0
then '0'
else
cast(
(cast(OEJUD.Text7 as money)/EJUD.Money1) * 100
AS varchar(20)) + ' %'
End AS '% Prog Billed'
答案 2 :(得分:0)
您的type.varchar列设置为0,某些值除以0不存在。
答案 3 :(得分:0)
DECLARE @myMoney Money
DECLARE @myAmount varChar(30)
SET @myMoney = 3
SET @myAmount ='10'
选择强制转换((CONVERT(DECIMAL,((@ myAmount / NULLIF(@ myMoney,0))* 100)))AS varchar(20))