SQL查询,将NULL视为零

时间:2015-07-05 18:51:56

标签: mysql sql

我正在学习SQL(使用MySQL)并且有一个非常简单的问题。我有一个关于员工的工资和奖金信息的表,我想对两者求和,但当至少有一个加数为NULL时,让MySQL返回零值,而不是返回{{1} }。最简单的方法是什么?

NULL

2 个答案:

答案 0 :(得分:4)

您可以使用COALESCE。它接受许多参数并返回第一个不为null的参数。

您也可以使用IFNULL(不要与ISNULL混淆)。在这种情况下它的行为相同,但COALESCE更便携;它允许多个参数并返回第一个非空参数。此外,其他数据库也支持它,因此如果您希望将来迁移到另一个数据库,则会更容易。

SELECT COALESCE(SALARY, 0) + COALESCE(BONUS, 0)
FROM EMPLOYEE_PAY_TBL;

SELECT IFNULL(SALARY, 0) + IFNULL(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;

答案 1 :(得分:0)

SELECT IFNULL(SALARY, 0), IFNULL(BONUS, 0) FROM EMPLOYEE_PAY_TBL;

您应该使用IFNULL功能。

<强> CORRECTED