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