SQL在数据处理过程当中,遇到除数为0该怎么办?

SQL专栏数据库

SQL数据库基础知识汇总express

SQL数据库高级知识汇总ide

问题函数

咱们在进行数据统计的时候,常常会遇到求百分比,环比,同比等这些须要除以某个数的状况,而若是除数为0,数据库是会报错的。code

那么遇到这样的状况咱们怎么处理呢?下面咱们用示例给你们讲解一下处理方法。it

解决办法io

状况一class

例如 基础

SELECT  A/B  FROM TAB

遇到这样的状况,通常的处理方法是用CASE WHEN来判断B的值语法

SELECT 
CASE WHEN B=0 THEN 0 ELSE A/B END  
FROM TAB

这样当B若是是0,咱们直接赋一个值,避免A/B参与计算报错。

状况二

上面是一种常见的状况,可是若是遇到下面这样的聚合函数呢?

例如

SELECT  SUM(A)/COUNT(B) FROM TAB

遇到这样的状况CASE WHEN 是不能判断COUNT(B)的值的,由于WHEN后面的条件不能使用聚合函数(语法要求),这个时候咱们能够这样处理

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时,刚好与第二个给定的参数0相等,这个时候NULLIF函数就会返回NULL,而SUM(A)在除以NULL时结果为NULL,外层使用ISNULL函数再对NULL值进行判断,这样最终结果就是0了。

这两种方法就是咱们平常处理除数为0的状况了,必定要记得哦~

相关文章
相关标签/搜索