东林博客

MySQL SUM()求和NULL转为0

MySQL中,使用SUM求和,如果为零,则显示NULL。这明显很不便程序的处理。

如:


mysql> SELECT SUM(total_fee) FROM orders WHERE status = 4;
+----------------+
| SUM(total_fee) |
+----------------+
|           NULL |
+----------------+
1 row in set (0.00 sec)


使用coalesce函数可以使结果NULL自动转为0;如:


mysql> SELECT COALESCE(SUM(total_fee),0) FROM orders WHERE status = 4;
+----------------------------+
| COALESCE(SUM(total_fee),0) |
+----------------------------+
|                       0.00 |
+----------------------------+
1 row in set (0.00 sec)



了解一下COALESCE函数

用途

将空值替换成其他值

返回第一个非空值

此函数的重点是:返回第一个非空值;例子:


mysql> SELECT COALESCE(NULL,'apple',NULL,'orange');
+--------------------------------------+
| COALESCE(NULL,'apple',NULL,'orange') |
+--------------------------------------+
| apple                                |
+--------------------------------------+
1 row in set (0.00 sec)


返回了第一个非空值apple。


其他知识点

COALESCE()函数可以用来完成几乎所有的空值处理,不过在很多数据库系统中都提供了它的简化版,这些简化版中只接受两个变量,其参数格式如下: 

MYSQL: 

  IFNULL(expression,value) 

MSSQLServer: 

  ISNULL(expression,value) 

Oracle: 

  NVL(expression,value) 

这几个函数的功能和COALESCE(expression,value)是等价的。


如何记住函数

coalesce

[ˌkoʊəˈles]

动词:联合、合并的意思。

记忆技巧:co 共同 + alesc 成长 + e → 共同成长 → 联合,结合

{{tip}}