SQL在查询过程中,遇到除数为0该怎么办?

问题

在进行数据统计相关工作时,我们时常会面临要计算百分比、环比、同比等情况,这些计算操作基本都离不开除以某个相应数字的步骤。然而,一旦出现除数是 0 的情况,数据库便会给出报错信息。

那么,当遭遇这样的状况时,我们又该采取何种应对措施呢?接下来,我们将借助具体示例,为大家详细地介绍一下对应的处理办法。

解决办法情况一
SELECT  A/B FROM TAB

 

当碰到此类情况时,通常可以采用 CASE WHEN 语句来对 B 的值进行判断。
SELECT 
CASE WHEN B=0 THEN 0 ELSE A/END  
FROM TAB

如此一来,倘若 B 的值为 0 的话,我们便可以直接给它赋予一个特定的值,这样就能防止出现因进行 A/B 运算而导致报错的情况了。

情况二上述所讲的是一种较为常见的情形,不过要是碰到下面这类聚合函数的话,又该如何呢?
SELECT  SUM(A)/COUNT(B) FROM TAB

 

在面临这样的状况时,使用 CASE WHEN 语句是难以对 COUNT (B) 的值做出判断的。而在这个时候,我们可以采取如下的处理方式。

 

SELECT  
ISNULL(SUM(A)/NULLIF(COUNT(B),0),0)
FROM  TAB

 

在这种情况下,我们会用到两个函数,分别是 NULLIF () 以及 ISNULL ()。

 

先来说说 NULLIF 函数。它包含两个参数,其语法格式为 NULLIF (expression1, expression2)。

 

它的具体作用在于,当所指定的这两个表达式的值相等的时候,该函数就会返回 NULL 值。

 

再看看 ISNULL 函数,同样它也具备两个参数,语法格式是 ISNULL (expression1, expression2)。

 

它所起到的作用是,要是第一个参数运算之后得到的结果为 NULL,那么它就会返回第二个参数所对应的值。

 

当 COUNT (B) 得出的结果是 0 的时候,这个结果刚好和 NULLIF 函数中给定的第二个参数 0 是相等的,在这样的情形下,NULLIF 函数便会返回 NULL 值。而 SUM (A) 在除以这个 NULL 值的时候,所得的结果同样是 NULL,此时在外层运用 ISNULL 函数对这个 NULL 值展开进一步的判断处理,如此一来,最终得到的结果就是 0 了。

 

以上这两种方法就是我们在平日里处理除数为 0 这种情况时所常用的手段了。

posted on   数据与人文  阅读(101)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示