Mysql实现null值排在最前/最后的方法示例
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,前言我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。为了处理这种情况,MySQL
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
精品咖啡豆
南京欣网互联网络科技有限公司
中关村互联网 科技集团
互联网金融 科技金融
齐家互联网科技
九亚互联网科技
哈尔滨新华互联网科技
顺网科技2021年互联网排名
北京三清互联网科技
随着互联网科技发展
央行互联网金融科技公司
来此购互联网科技有限公司
玉溪互联网科技怎么选
深圳艾果互联网通讯科技
山东星卡互联网科技有限公司官网
江苏苏星互联网科技有限公司
互联网公司属于科技吗
唐山双旺合互联网科技产业园
青岛互联网科技园
每日互联网科技新闻
互联网科技有限公司
北京路客互联网科技有限公司
互联网电商科技
互联网科技股票
未来的互联网科技
善班互联网科技有限公司
河南住房之家互联网科技
互联网与数字科技关系
艺电能源互联网科技有限公司招聘
盐城市攀科互联网科技有限公司