炫意html5
最早CSS3和HTML5移动技术网站之一

SQL中除数为0处理情况演示

情况一

例如

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的情况了,一定要记得哦!

炫意HTML5 » SQL中除数为0处理情况演示

Java基础教程Android基础教程