
COALESCE是一种 SQL 函数用于返回参数列表中第一个非 NULL 的值。它常用于处理可能存在NULL值的场景并提供默认值或备用值。语法COALESCE(expression1, expression2, ..., expressionN)expression1, expression2, ..., expressionN一组表达式按从左到右的顺序依次评估。函数返回第一个非 NULL 的值如果所有表达式均为NULL则返回NULL。常见用途替换 NULL 值用默认值代替可能为NULL的字段值。多列优先级从多个列中选择优先级最高且非NULL的值。简化嵌套逻辑替代复杂的CASE表达式。示例1. 替换 NULL 值在查询中将NULL替换为指定的默认值。SELECT COALESCE(NULL, Default Value) AS result;结果resultDefault Value2. 用于字段默认值假设有一个表Employees包含员工的工资 (salary) 列。如果工资值为NULL默认显示为0。SELECT employee_id, COALESCE(salary, 0) AS salary_with_default FROM Employees;示例数据employee_idsalary150002NULL结果employee_idsalary_with_default15000203. 多列优先级从多列中选择第一个非 NULL 的值例如在联系人信息中优先显示电子邮件其次是电话号码。SELECT COALESCE(email, phone, No Contact) AS contact_info FROM Customers;示例数据emailphonejohnexample.comNULLNULL1234567890NULLNULL结果contact_infojohnexample.com1234567890No Contact4. 结合聚合函数在计算过程中处理可能为NULL的值。例如计算一个表中的平均值但对NULL值使用默认值 0。SELECT AVG(COALESCE(score, 0)) AS avg_score FROM Tests;注意事项数据类型一致性所有参数必须是相同或兼容的数据类型。如果参数数据类型不一致数据库会尝试隐式转换。性能COALESCE在参数列表较长时可能会略微影响性能。与IFNULL的对比MySQL 提供的IFNULL(expression, value)功能类似于COALESCE但只支持两个参数。总结COALESCE是一个功能强大且常用的 SQL 函数主要用来处理NULL值和实现灵活的值选择策略能够使查询逻辑更清晰、简洁。