Mysql SQL查询,将NULL视为零
我正在学习SQL(使用MySQL),有一个非常简单的问题。我有一个包含员工工资和奖金信息的表,我想将两者相加,但是当至少有一个summand为Mysql SQL查询,将NULL视为零,mysql,sql,Mysql,Sql,我正在学习SQL(使用MySQL),有一个非常简单的问题。我有一个包含员工工资和奖金信息的表,我想将两者相加,但是当至少有一个summand为NULL时,让MySQL返回值0,而不是返回NULL。最简单的方法是什么 mysql> SELECT SALARY, BONUS FROM EMPLOYEE_PAY_TBL; +----------+---------+ | SALARY | BONUS | +----------+---------+ | 30000.00 | 2000.0
NULL
时,让MySQL返回值0,而不是返回NULL
。最简单的方法是什么
mysql> SELECT SALARY, BONUS FROM EMPLOYEE_PAY_TBL;
+----------+---------+
| SALARY | BONUS |
+----------+---------+
| 30000.00 | 2000.00 |
| NULL | NULL |
| 40000.00 | NULL |
| 20000.00 | 1000.00 |
| NULL | NULL |
| NULL | NULL |
+----------+---------+
mysql> SELECT SALARY + BONUS FROM EMPLOYEE_PAY_TBL;
+----------------+
| SALARY + BONUS |
+----------------+
| 32000.00 |
| NULL |
| NULL |
| 21000.00 |
| NULL |
| NULL |
+----------------+
你可以用。它接受许多参数,并返回第一个非空参数
您也可以使用IFNULL
(不要与ISNULL
混淆)。在这个场景中,它的行为相同,但是COALESCE
更便于移植;它允许多个参数,并返回第一个非空参数。另外,其他数据库也支持它,因此,如果您将来愿意,迁移到另一个数据库会稍微容易一些
SELECT COALESCE(SALARY, 0) + COALESCE(BONUS, 0)
FROM EMPLOYEE_PAY_TBL;
或
两者都是一种非常方便的书写方式:
SELECT
CASE WHEN SALARY IS NULL THEN 0 ELSE SALARY END +
CASE WHEN BONUS IS NULL THEN 0 ELSE BONUS END
FROM EMPLOYEE_PAY_TBL;
从员工薪酬列表中选择IFNULL(工资,0)、IFNULL(奖金,0)代码>
您应该为此使用IFNULL
函数
已更正非常好,谢谢!我添加了一点解释。这似乎给出了一个错误:mysql>从EMPLOYEE\u PAY\u TBL中选择ISNULL(薪水,0),ISNULL(奖金,0);错误1582(42000):对本机函数“ISNULL”的调用中的参数计数不正确。
。对不起,我打错了IFNULL
是正确的。
SELECT
CASE WHEN SALARY IS NULL THEN 0 ELSE SALARY END +
CASE WHEN BONUS IS NULL THEN 0 ELSE BONUS END
FROM EMPLOYEE_PAY_TBL;