【SQL】MySQL中空值处理COALESCE函数

博主介绍:✌全网粉丝24W+,ZEEKLOG博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

MySQL中空值处理COALESCE函数

COALESCE 是一个在多种编程语言和数据库系统中常见的函数或操作符,主要用于处理空值(NULL)。它的核心功能是 返回其参数列表中的第一个非空值

一、核心概念

COALESCE(value1, value2, value3, ..., valueN) 
  • 功能:按从左到右的顺序检查每个参数。
  • 返回值:返回第一个不为 NULL 的参数值。
  • 如果所有参数都为 NULL:则返回 NULL

二、主要应用场景

2.1 场景 1:替换 SELECT 查询中的 NULL 值

-- 示例数据CREATETABLE employees ( id INT, name VARCHAR(50), salary DECIMAL(10,2), bonus DECIMAL(10,2));INSERTINTO employees VALUES(1,'张三',5000.00,NULL),(2,'李四',6000.00,1000.00),(3,'王五',NULL,500.00);-- 使用 COALESCE 处理 NULLSELECT name,COALESCE(salary,0)as salary,-- 如果salary为NULL,显示0COALESCE(bonus,0)as bonus,-- 如果bonus为NULL,显示0COALESCE(salary,0)+COALESCE(bonus,0)as total_income FROM employees;

结果:

name salary bonus total_income 张三 5000.00 0.00 5000.00 李四 6000.00 1000.00 7000.00 王五 0.00 500.00 500.00 

2.2 场景 2:多字段优先级选择

-- 用户联系方式表CREATETABLE user_contacts ( user_id INT, phone VARCHAR(20), mobile VARCHAR(20), email VARCHAR(50));INSERTINTO user_contacts VALUES(1,NULL,'13800138000','[email protected]'),(2,'010-12345678',NULL,NULL),(3,NULL,NULL,'[email protected]');-- 优先选择手机号,其次电话,最后邮箱SELECT user_id,COALESCE(mobile, phone, email,'无联系方式')as primary_contact FROM user_contacts;

结果:

user_id primary_contact 1 13800138000 2 010-12345678 3 [email protected] 

2.3 场景 3:在 WHERE 子句中使用

-- 查找没有工资记录但可能有奖金的员工SELECT name, bonus FROM employees WHERECOALESCE(salary,0)=0AND bonus ISNOTNULL;

2.4 场景 4:与聚合函数结合使用

-- 计算平均工资(NULL值视为0)SELECTAVG(COALESCE(salary,0))as avg_salary FROM employees;

三、与其他类似函数比较

3.1 与 ISNULLNVL 的比较

  • COALESCE:是 SQL 标准函数,可以接受两个或更多参数,更具灵活性。
  • ISNULL (SQL Server 特有):通常只接受两个参数,功能与 COALESCE 类似,但非标准。
  • NVL (Oracle 特有):也是处理两个参数的空值替换函数。

总结COALESCE 是一个强大的工具,用于优雅地处理空值,提供默认值或从多个备选值中选择一个有效值,广泛应用于数据库操作和数据处理中。

3.2 COALESCE 与 IFNULL 的区别

特性COALESCEIFNULL
参数数量多个参数只能有两个参数
灵活性更高,可处理多个备选值较低
标准兼容性SQL标准函数MySQL特有函数

四、使用技巧

4.1 技巧 1:设置默认值链

-- 多层备选方案SELECT name,COALESCE( mobile, phone, CONCAT('邮箱: ', email),'暂无联系方式')as contact_info FROM user_contacts;

4.2 技巧 2:在 UPDATE 语句中使用

-- 将NULL奖金更新为0UPDATE employees SET bonus =COALESCE(bonus,0)WHERE bonus ISNULL;

4.3 技巧 3:在 ORDER BY 中使用

-- 优先按工资排序,工资为NULL的排后面SELECT name, salary FROM employees ORDERBYCOALESCE(salary,0)DESC;

五、注意事项

  1. 性能考虑COALESCE 会按顺序评估每个参数,直到找到第一个非 NULL 值
  2. 数据类型:所有参数应该是相同或兼容的数据类型
  3. 与空字符串区别NULL 表示缺失值,空字符串 '' 是有效值

六、总结

  • COALESCE 是处理 NULL 值的强大工具
  • 支持多个参数,比 IFNULL 更灵活
  • 可用于 SELECT、WHERE、ORDER BY、UPDATE 等各种场景
  • 能够有效避免因 NULL 值导致的计算错误和显示问题

掌握 COALESCE 函数能让你的 SQL 查询更加健壮和易读!

好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!

在这里插入图片描述

Read more

python八股文汇总(持续更新版)

python装饰器 一、装饰器是什么? 装饰器是Python中一种"化妆师",它能在不修改原函数代码的前提下,给函数动态添加新功能。 * 本质:一个接收函数作为参数,并返回新函数的工具。 * 作用:像给手机贴膜,既保护屏幕(原函数),又新增防摔功能(装饰逻辑)。 二、核心原理 1. 函数是"对象":Python中函数可以像变量一样传递,这是装饰器的基础。 2. 闭包机制:装饰器通过嵌套函数(闭包)保留原函数,并包裹新功能。 工作流程: 1. 你调用被装饰的函数(如hello())。 2. Python实际执行的是装饰器加工后的新函数。 3. 新函数先执行装饰器添加的逻辑(如权限检查),再执行原函数。 三、常见用途 场景 作用 生活类比 权限验证 检查用户是否登录再执行函数

By Ne0inhk
Python快速入门专业版(十四):变量赋值的“陷阱”:浅拷贝与深拷贝(用代码看懂内存地址)

Python快速入门专业版(十四):变量赋值的“陷阱”:浅拷贝与深拷贝(用代码看懂内存地址)

目录 引言:为什么改了b,a也跟着变? 1.赋值的本质:不是值传递,而是引用传递 1.1 用id()函数看穿内存地址 场景1:不可变对象的赋值(无副作用) 场景2:可变对象的赋值(有副作用) 1.2 不可变对象的“特殊情况”:小整数池与字符串驻留 2.浅拷贝(Shallow Copy):只复制“外层壳子” 2.1 浅拷贝的4种实现方式 代码示例:列表的浅拷贝 2.2 浅拷贝的“隐形陷阱”:内层对象仍共享 代码演示:浅拷贝的内层共享问题 2.3 浅拷贝的适用场景 3.深拷贝(Deep Copy):复制“所有层级”

By Ne0inhk
平衡二叉搜索树之 AVL 树的模拟实现【C++】

平衡二叉搜索树之 AVL 树的模拟实现【C++】

文章目录 * AVL树的简单介绍 * 全部的实现代码放在了文章末尾 * 准备工作 * 包含头文件 * 类的成员变量 * 构造函数和拷贝构造 * swap和赋值运算符重载 * 析构函数 * find * insert[重要] * 当parent的平衡因子为1/-1时,如何向上更新祖先节点的平衡因子呢? * 怎么旋转? * 左单旋 * 右单旋 * 左右双旋 * 右左双旋 * 旋转的平衡因子更新 * 左单旋和右单旋 * 左右双旋和右左双旋 * insert的全部代码 * empty * size * 中序遍历 * 全部代码 AVL树的简单介绍 我上一篇文章提到的普通二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 AVL树就可以解决上述问题,让搜索树的查找效率在任何情况下都能稳定是O(logN) AVL树解决上述问题的方法是: 保证每个结点的左右子树高度之差的绝对值不超过1 这样就

By Ne0inhk

强力3D模型体积计算:Python工具助你精准掌控STL文件分析

强力3D模型体积计算:Python工具助你精准掌控STL文件分析 【免费下载链接】STL-Volume-Model-CalculatorSTL Volume Model Calculator Python 项目地址: https://gitcode.com/gh_mirrors/st/STL-Volume-Model-Calculator 在3D打印和数字制造领域,你是否经常为计算模型体积而烦恼?STL体积模型计算器正是为此而生!这款基于Python开发的强大工具,能够快速分析STL、NIfTI和DICOM格式文件,自动计算体积、表面积、边界框尺寸,并提供20多种材料质量估算,让3D模型分析变得前所未有的简单高效。 🎯 痛点解析:为什么你需要专业体积计算工具 场景一:3D打印成本控制难题 每次打印前都要手动估算耗材用量?传统方法不仅耗时,还容易出错。这款工具能够一键计算模型体积,结合材料密度自动估算成本,让预算控制更加精准。 场景二:医疗影像分析困扰 处理NIfTI和DICOM医学图像时,如何快速获取植入物体积数据?工具的专业算法能够准确计算医疗模型的几何属性。 场景三

By Ne0inhk