如何将 MySQL COALESCE() 函数与 MySQL SUM() 函数一起使用来自定义输出?


当 MySQL SUM() 函数获取一个没有值的列作为参数时,它将返回 NULL,而不是 0 作为输出。但是,如果我们想要自定义此输出以显示 0 作为输出,则可以使用 MySQL COALESCE() 函数,该函数接受两个参数,如果第一个参数为 NULL,则返回第二个参数,否则返回第一个参数。为了说明这一点,我们以“招标”表为例,该表包含以下数据:

mysql> Select * from tender;

+----+---------------+--------------+
| Sr | CompanyName   | Tender_value |
+----+---------------+--------------+
| 1  | Abc Corp.     | 250.369003   |
| 2  | Khaitan Corp. | 265.588989   |
| 3  | Singla group. | 220.255997   |
| 4  | Hero group.   | 221.253006   |
| 5  | Honda group   | NULL         |
+----+---------------+--------------+

5 rows in set (0.00 sec)

当我们尝试查找“本田集团”报出的总投标价值时,MySQL SUM() 函数返回 NULL,因为它在列中没有值。

mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group';

+-------------------+
| SUM(Tender_value) |
+-------------------+
|              NULL |
+-------------------+

1 row in set (0.00 sec)

但是,假设如果我们想将此输出从 NULL 自定义为 0,则可以使用 COALESCE 函数与 SUM() 一起查找“本田集团”报出的总投标价值。

mysql> Select COALESCE(SUM(Tender_value),0) From Tender Where CompanyName = 'Honda Group';

+-------------------------------+
| COALESCE(SUM(Tender_value),0) |
+-------------------------------+
|                      0.000000 |
+-------------------------------+

1 row in set (0.00 sec)

现在,当我们使用 COALESCE 函数与 SUM() 一起查找“Mohan”(“姓名”列中不存在的姓名)键入的总页数时,MySQL SUM() 函数返回 0:

mysql> SELECT COALESCE(SUM(daily_typing_pages),0) FROM employee_tbl WHERE Name = ‘Mohan’;

+-------------------------+
| SUM(daily_typing_pages) |
+-------------------------+
|                       0 |
+-------------------------+

1 row in set (0.00 sec)

从以上结果集中可以清楚地看出,如果列中没有值,无论其数据类型如何,MySQL SUM() 函数都将返回 NULL。

更新于: 2020-02-07

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告