COALESCE 是一个用于返回第一个非 NULL 值的函数,适合在查询中处理 NULL 值的场景。
它可以接受一个或多个参数,按照参数的顺序进行检查,返回第一个非 NULL 的值。如果所有参数都为 NULL,则返回 NULL。
语法
COALESCE(expression1, expression2, …, expressionN)
参数
expression1
,expression2
, …,expressionN
: 要评估的表达式列表。
返回值
- 返回第一个非
NULL
的值。 - 如果所有参数都为
NULL
,返回NULL
。
使用场景
- 为
NULL
值提供默认值。 - 在多列之间选择优先级最高的非
NULL
值。 - 简化复杂的条件判断。
实战
示例 1:处理单个字段的 NULL 值
假设有一个 users
表:
id | name | nickname | fullname |
---|---|---|---|
1 | Alice | NULL | Alice L. |
2 | Bob | Bobby | NULL |
3 | Charlie | NULL | NULL |
查询:返回 nickname,如果 nickname 为 NULL,则使用 fullname,如果两者都为 NULL,返回 N/A:
SELECT id,
name,
COALESCE(nickname, fullname, ‘N/A’) AS display_name
FROM users;
结果
id | name | display_name |
---|
1 | Alice | Alice L. |
2 | Bob | Bobby |
3 | Charlie | N/A |
示例 2:设置返回字段的默认值
假设某个订单表 orders
中,有一个字段 discount_price
,如果 discount_price
为 NULL
,则返回 original_price
的值。
SELECT id,
product_name,
COALESCE(discount_price, original_price) AS final_price
FROM orders;
示例 3:排序时处理 NULL 值
对表按某列排序,但将 NULL 值视为特定值,例如 0。
SELECT *
FROM users
ORDER BY COALESCE(age, 0) DESC;