为什么这给我一个零除错误

时间:2017-04-21 20:04:16

标签: 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'
                and committedexposure / totalliabilities <= 1

我正在使用SQL Server 2014

1 个答案:

答案 0 :(得分:6)

您无法保证评估子句的顺序,因此committedexposure / totalliabilities之前可能会totalliabilities <> 0评估0

使用nullnullif()设置为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 的解决方法:

<> null

is not null可能应为totalliabilities <> 0,如果or则为真,所以这是多余的。

另外,请注意逻辑运算符的and takes precedence over or。最好将<p><div id ="something"></div></p> 的每一面都包裹起来,这样就可以清楚地知道你想要完成什么。