28、 COALESCE() 返回第一个非NULL值函数
1、COALESCE() 函数
空值处理函数,用于返回参数列表中第一个非 NULL 的值。
COALESCE(value1, value2, ..., valueN)
- 从左到右依次检查每个参数,返回第一个不为
NULL的值。 - 如果所有参数都是
NULL,则返回NULL。
如:数据:
| name | phone |
|---|---|
| Alice | 13800138000 |
| Bob | NULL |
| Carol | NULL |
场景:用户表中 phone 字段可能为空,查询时希望显示 "未提供" 而不是空白或 NULL。
SELECT name, COALESCE(phone, '未提供') AS contact_phone FROM users;
结果:
| name | contact_phone |
|---|---|
| Alice | 13800138000 |
| Bob | 未提供 |
| Carol | 未提供 |
解析:
- 对 Alice:
phone = '138...'≠ NULL → 返回'138...' - 对 Bob/Carol:
phone = NULL→ 跳过,取第二个参数'未提供'返回。
数据:
| name | mobile | ||
|---|---|---|---|
| 张三 | NULL | zhang@xx.com | NULL |
| 李四 | NULL | NULL | lisi123 |
| 王五 | 139... | wang@xx.com | NULL |
| 赵六 | NULL | NULL | NULL |
场景:用户可能有多个联系方式,优先级:手机 > 邮箱 > 微信 > “无联系方式”
SELECT name, COALESCE(mobile, email, wechat, '无联系方式') AS best_contact FROM users;
结果:
| name | best_contact |
|---|---|
| 张三 | zhang@xx.com |
| 李四 | lisi123 |
| 王五 | 139... |
| 赵六 | 无联系方式 |
解析:
COALESCE从左到右扫描,一旦遇到非 NULL 就立即返回- 王五虽然有邮箱,但因手机非 NULL,优先返回手机
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/19246160

浙公网安备 33010602011771号