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

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

博客园 - 每天进步多一点

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 值的最佳选择。