在MySQL中,COALESCE 函数用于返回参数列表中的第一个非 NULL 值。当处理可能包含 NULL 的数据时,这个函数非常实用,常用于数据清洗、默认值替换等场景。
COALESCE 基本语法
COALESCE(value1, value2, ..., valueN)
函数会从左到右依次检查每个参数:
遇到第一个非 NULL 的值就立即返回 如果所有参数都为 NULL,则返回 NULL常见使用场景
1. 替代 NULL 显示默认值
比如查询用户信息时,某些用户的电话号码为空,希望显示“未知”:
SELECT name, COALESCE(phone, '未知') AS phone FROM users;若 phone 为 NULL,则结果中显示“未知”。
2. 多字段取有效值
用户可能有多个联系方式(手机号、备用号、邮箱),取第一个可用的:
SELECT name, COALESCE(mobile, backup_phone, email, '无联系方式') AS contact FROM users;系统会优先使用 mobile,若为空则尝试 backup_phone,依此类推。
3. 与聚合函数配合使用
统计某字段平均值时,用 0 替代 NULL 避免影响计算:
SELECT AVG(COALESCE(score, 0)) FROM students;这样 NULL 分数被视为 0 参与计算。
注意事项
COALESCE 的参数类型应尽量一致,否则 MySQL 可能进行隐式转换,导致意外结果。例如字符串和数字混合时,可能全部转为数字处理。
另外,COALESCE 是 SQL 标准函数,在其他数据库中也通用,具有良好的可移植性。
基本上就这些,COALESCE 使用简单但很实用,特别适合处理不完整的数据。
