COALESCE是SQL中的一个函数,用于返回参数列表中的第一个非空值,若所有参数均为NULL则返回NULL,常用于处理数据中的空值情况。
核心功能与语法
COALESCE函数的基本语法为:COALESCE(expression1, expression2, ..., expressionN)
。其执行逻辑为从左至右依次检查参数,返回第一个非NULL的表达式值。若所有参数均为NULL,则返回NULL。
主要应用场景
- 默认值处理:当字段可能为NULL时,提供备用值。例如:
SELECT COALESCE(email, 'default@example.com') FROM users;
若email
为NULL,则返回默认字符串。
2. 多列数据合并:从多个列中选择首个有效值。例如:
SELECT COALESCE(work_phone, home_phone, mobile_phone) FROM contacts;
优先返回非空的电话号码。
3. 简化复杂逻辑:替代多层CASE WHEN
语句,提升代码可读性。例如:
COALESCE(discount, 0) -- 等价于 CASE WHEN discount IS NOT NULL THEN discount ELSE 0 END
性能与注意事项
- 性能影响:参数数量或表达式复杂度可能影响查询效率,建议避免过多参数或嵌套子查询。
- 与同类函数对比:相比SQL Server的
ISNULL
或Oracle的NVL
,COALESCE是SQL标准函数且支持多参数,更具通用性。