Sql 为什么这会给我一个除以零的错误

Sql 为什么这会给我一个除以零的错误,sql,sql-server,Sql,Sql Server,为什么这会给我一个除以零的错误?我希望这能返回数据库中带有指定参数的记录计数。谢谢你的帮助 SELECT COUNT(*) FROM dbcrms.ccars.ci_submission_history where crms_dt = '2016-12-31' and totalliabilities <> null or totalliabilities <> 0 and mra_required = 'Yes'

为什么这会给我一个除以零的错误?我希望这能返回数据库中带有指定参数的记录计数。谢谢你的帮助

SELECT COUNT(*)
FROM dbcrms.ccars.ci_submission_history
    where crms_dt = '2016-12-31' 
        and totalliabilities <> null or totalliabilities <> 0
            and mra_required = 'Yes'
                and committedexposure / totalliabilities <= 1
选择计数(*)
来自dbcrms.ccars.ci_提交历史
其中,crms_dt='2016-12-31'
和Totalabilities null或Totalabilities 0
所需mra_=‘是’

和CommittedePositure/Totalabilities您不能保证条款的评估顺序,因此
CommittedePositure/Totalabilities
可能在
Totalabilities 0
之前进行评估

使用
nullif()
0
设置为
null
的变通方法:

选择计数(*)
来自dbcrms.ccars.ci_提交历史
其中,crms_dt='2016-12-31'
及总可供量0
所需mra_=‘是’

和committedexposure/nullif(totalabilities,0)您不能保证对您的子句进行评估的顺序,因此
committedexposure/totalabilities
可能在
totalabilities 0

使用
nullif()
0
设置为
null
的变通方法:

选择计数(*)
来自dbcrms.ccars.ci_提交历史
其中,crms_dt='2016-12-31'
及总可供量0
所需mra_=‘是’

和committedexposure/nullif(totaliabilities,0),因为您忘记了括号的totaliabilities值为零,因为至少有一行totaliabilities的值为0,并且没有括号。我认为这不是有效的空比较-
totaliabilities NULL
。对于这样的空比较,您必须使用
Totalabilities IS NOT Null
,对吗?因为您忘记了括号Totalabilities值为零,因为至少有一行Totalabilities的值为0,并且没有括号。我认为这不是有效的空比较-
Totalabilities Null
。对于这样的空比较,您必须使用
Totalabilities IS NOT Null
,对吗?@DanielBailey很乐意提供帮助@丹尼尔贝利很乐意帮忙!
SELECT COUNT(*)
FROM dbcrms.ccars.ci_submission_history
    where crms_dt = '2016-12-31' 
        and totalliabilities <> 0
            and mra_required = 'Yes'
                and committedexposure / nullif(totalliabilities,0) <= 1