Mysql实现null值排在最前/最后的方法示例
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,前言我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。为了处理这种情况,MySQL
千家信息网最后更新 2025年11月08日Mysql实现null值排在最前/最后的方法示例
前言
我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。
为了处理这种情况,MySQL提供了三大运算符:
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
- <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。
MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。
最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。
oracle做数据排序的时候,有时候可以用nulls first或者nulls last将null值排在最前或者最后。
oracle方法:
null值排在最前
select * from A order by a desc null first
null值排在最后
select * from A order by a desc null last
不过迁到Mysql的话,mysql并没有提供类似函数,所以要怎么实现?
下面给出解决方法:
null值排在最后,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0
select * from A order by IF(ISNULL(a),1,0),a desc
null值排在最前,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0
select * from A order by IF(ISNULL(a),0,1),a desc
如果mybatis里需要oracle和Mysql版本的,或者可以从后台传个数据表版本标识dbType,或者直接用mybatis的_databaseId方法。
order by c.create_date desc nulls last order by IF(ISNULL(c.create_date),1,0), c.create_date desc
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
函数
运算
运算符
方法
数据
版本
内容
命令
数据表
条件
处理
学习
工作
特殊
三大
两个
价值
前言
后台
子句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器的什么决定网速
网络安全二次防护装置
星集网络技术有限公司
软件开发与建模工具
山东互联网软件开发怎么样
林业局开展网络安全宣传周活动
删除数据库关联表
工商银行提示服务器错误
20m云服务器能在线多少人
数据库如何保证数据不丢失
没有找到 文件服务器管理
怎么查自己的网络安全密钥
房车网络安全设计
samp创建服务器
软件开发编码阶段用的工具
互联网领先科技王海峰
呼和浩特网络安全工资待遇好吗
我国DNA数据库的作用
电脑服务器品牌
论述网络安全审计的目的
服务器打游戏怎么打
微网络技术服务
服务器如何设置成开机密码
lol出现服务器异常
如何保证数据库的安全性
有什么好的交友软件开发
小小军团安卓服务器
网络安全测评做什么
深圳酒店软件开发市场价
企业档案管理软件开发流程