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

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

我有一条错误消息:

MSG 8134,16级,状态1,1行除以遇到的零错误。

写SQL代码的最好方法是什么,这样我就不会再看到这个错误消息了?

我可以做以下任何一件事:

  • 添加WHERE子句,使我的除数永远不会为零

  • 我可以添加一个案例陈述,这样就有了对零的特殊处理。

是使用NULLIF条款?

是否有更好的办法,或如何执行?



守候你守候我
浏览 411回答 3
3回答

慕娘9325324

为了避免“零除法”错误,我们编写了这样的程序:Select Case when divisor=0 then nullElse dividend / divisorEnd ,,,但这里有一种更好的方法:Select dividend / NULLIF(divisor, 0) ...现在唯一的问题是如果我使用“/”键,记住Nullif位。

Helenr

如果您想返回零,如果发生零检测,您可以使用:SELECT COALESCE(dividend / NULLIF(divisor,0), 0) FROM sometable对于每一个除数为零,您将在结果集中得到一个零。

手掌心

这似乎是最好的解决我的情况时,试图解决除以零,这确实发生在我的数据。假设您想要计算各个学校俱乐部的男女比率,但是您发现以下查询失败,并在试图为没有女性的指环王俱乐部计算比率时,发出了一个除以零的错误: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,并且不会产生错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL