SQL:将类型varchar转换为要分割的money类型。 **遇到零除错误**

时间:2017-07-11 18:45:20

标签: sql sql-server

收到错误:

  

遇到零错误

我需要在SQL Server中转换类型varchar,以便能够按类型money进行划分。我在论坛上搜索了一堆,似乎无法找到有效的答案。以下是我目前的情况。完成所有操作后,我需要在报告中以百分比显示答案。感谢任何能提供帮助的人!

  cast((CONVERT(DECIMAL, ((OEJUD.Text7/OEJUD.Money1) * 100)))AS varchar(20)) + '%' AS '% Prog Billed'

4 个答案:

答案 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))