惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
T
Threat Research - Cisco Blogs
Cloudbric
Cloudbric
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Attack and Defense Labs
Attack and Defense Labs
P
Privacy International News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
O
OpenAI News
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
A
Arctic Wolf
Spread Privacy
Spread Privacy
G
GRAHAM CLULEY
T
Tor Project blog
博客园_首页
Know Your Adversary
Know Your Adversary
有赞技术团队
有赞技术团队
S
Secure Thoughts
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
V
Visual Studio Blog
J
Java Code Geeks
Cisco Talos Blog
Cisco Talos Blog
Schneier on Security
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security Affairs
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
宝玉的分享
宝玉的分享
量子位
Last Week in AI
Last Week in AI
月光博客
月光博客
罗磊的独立博客
S
SegmentFault 最新的问题

博客园 - 每天进步多一点

MySQL5.7实现row_number()和over()函数 C#学习相关系列之Linq用法---group和join相关用法 linq group by having 实现 常用知识-T-SQL优化 mysql窗口函数、Mysql分析函数 MySQL系列三(定位慢SQL、索引优化、SQL优化)Using filesort MySQL 内存相关参数设置 SQL性能优化指南:如何优化MySQL多表join场景 MySQL内部临时表(Using temporary)案例详解及优化解决方法 cookie操作类(加密,获取,删除) MySql 5.7 索引不存在则创建,存在则忽略 SQL SERVER年月周日超止时间 数据抽取的常见理论方法 ETL系列-数据抽取(Extract) 常用时间sql语句 数据库运维:mysql 数据库迁移方法-mysqldump 了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数 MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明 如何看懂explain工具信息,使用explain工具来分析索引 mysql 如何查看sql语句执行时间和效率
MySQL COALESCE 函数使用详解
每天进步多一点 · 2025-12-31 · via 博客园 - 每天进步多一点

MySQL COALESCE 函数使用详解

COALESCE 是 MySQL 中一个非常有用的函数,用于返回参数列表中的第一个非 NULL 值。下面详细介绍它的用法和示例。

基本语法

COALESCE(value1, value2, ..., valueN)

功能说明

  • 函数从左到右依次检查每个参数
  • 返回第一个不为 NULL 的参数值
  • 如果所有参数都为 NULL,则返回 NULL

使用场景

1. 处理 NULL 值替代

SELECT COALESCE(column_name, '默认值') FROM table_name;

当 column_name 为 NULL 时,返回 ‘默认值’

2. 多列优先选择

SELECT COALESCE(phone, mobile, email, '无联系方式') AS contact_info FROM customers;

按优先级选择第一个不为 NULL 的联系方式

3. 计算中使用

SELECT product_name, price * COALESCE(discount, 1) AS final_price FROM products;

当 discount 为 NULL 时使用 1 作为默认折扣

实际示例

示例1:基本使用

SELECT COALESCE(NULL, 'A', 'B');  -- 返回 'A'
SELECT COALESCE(NULL, NULL, 'B'); -- 返回 'B'
SELECT COALESCE(NULL, NULL, NULL); -- 返回 NULL

示例2:表数据应用

-- 假设有员工表 employees,其中 commission 列可能为 NULL
SELECT 
    employee_name,
    COALESCE(commission, 0) AS commission
FROM 
    employees;

示例3:与 CASE 表达式等效

COALESCE 可以看作是以下 CASE 表达式的简写:

CASE 
    WHEN value1 IS NOT NULL THEN value1
    WHEN value2 IS NOT NULL THEN value2
    ...
    ELSE NULL
END

注意事项

  • COALESCE 是 ANSI SQL 标准函数,在大多数数据库中可用
  • 与 IFNULL 函数不同,COALESCE 可以接受多个参数
  • 性能考虑:参数越多,评估成本越高
  • 所有参数应该是相同或兼容的数据类型


与相关函数比较

  • IFNULL(expr1, expr2):只有两个参数,相当于 COALESCE(expr1, expr2)
  • ISNULL(expr):只检查是否为 NULL,返回 1 或 0
  • NULLIF(expr1, expr2):当 expr1 = expr2 时返回 NULL,否则返回 expr1
  • COALESCE 因其灵活性和标准性,通常是处理 NULL 值的最佳选择。