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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 每天进步多一点

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