绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
SQL在查询过程中,遇到除数为0该怎么办?
2022-07-05 16:09:02


问题
我们在进行数据统计的时候,经常会遇到求百分比,环比,同比等这些需要除以某个数的情况,而如果除数为0,数据库是会报错的。

那么遇到这样的情况我们怎么处理呢?下面我们用示例给大家讲解一下处理方法。

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


遇到这样的情况,一般的处理方法是用CASE WHEN来判断B的值
SELECT 
CASE WHEN B= THEN  ELSE A/B 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),),)
FROM  TAB


其中这里使用了两个函数,NULLIF()和ISNULL() NULLIF函数有两个参数,定义如下:
NULLIF( expression1 , expression2 )
其作用就是:如果两个指定的表达式相等,就返回NULL值。

ISNULL函数也有两个参数,定义如下:
ISNULL( expression1 , expression2 )
其作用是:如果个参数的结果为NULL,就返回第二个参数的值。

当COUNT(B)的结果为0时,恰好与第二个给定的参数0相等,这个时候NULLIF函数就会返回NULL,而SUM(A)在除以NULL时结果为NULL,外层使用ISNULL函数再对NULL值进行判断,这样终结果就是0了。

这两种方法就是我们日常处理除数为0的情况了,一定要记得哦~


原文链接:https://mp.weixin.qq.com/s/GK2AV6Rzfts6JslSPivQaA

分享好友

分享这个小栈给你的朋友们,一起进步吧。

SQL Server专区
创建时间:2020-05-14 14:17:02
SQL Server 是Microsoft 公司推出的关系型数据库管理系统
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~