为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免SQL中的“零除”错误?

如何避免SQL中的“零除”错误?

元芳怎么了 2019-07-22 15:45:56
如何避免SQL中的“零除”错误?我有一条错误消息:MSG 8134,16级,状态1,1行除以遇到的零错误。写SQL代码的最好方法是什么,这样我就不会再看到这个错误消息了?我可以做以下任何一件事:添加WHERE子句,使我的除数永远不会为零或我可以添加一个案例陈述,这样就有了对零的特殊处理。是使用NULLIF条款?是否有更好的办法,或如何执行?
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

为了避免“零除法”错误,我们编写了这样的程序:

Select Case when divisor=0 then nullElse dividend / divisorEnd ,,,

但这里有一种更好的方法:

Select dividend / NULLIF(divisor, 0) ...

现在唯一的问题是如果我使用“/”键,记住Nullif位。


查看完整回答
反对 回复 2019-07-22
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果您想返回零,如果发生零检测,您可以使用:

SELECT COALESCE(dividend / NULLIF(divisor,0), 0) FROM sometable

对于每一个除数为零,您将在结果集中得到一个零。


查看完整回答
反对 回复 2019-07-22
?
DIEA

TA贡献1820条经验 获得超2个赞

这似乎是最好的解决我的情况时,试图解决除以零,这确实发生在我的数据。

假设您想要计算各个学校俱乐部的男女比率,但是您发现以下查询失败,并在试图为没有女性的指环王俱乐部计算比率时,发出了一个除以零的错误:

SELECT club_id, males, females, males/females AS ratio  FROM school_clubs;

您可以使用该函数NULLIF以避免除以零。NULLIF比较两个表达式,如果它们相等,则返回NULL,否则返回第一个表达式。

将查询重写为:

SELECT club_id, males, females, males/NULLIF(females, 0) AS ratio  FROM school_clubs;

除以NULL施予NULL,并且不会产生错误。


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 941 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信