Mysql实现null值排在最前/最后的方法示例
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,前言我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。为了处理这种情况,MySQL
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
sql数据库查询今年
标准研究院网络安全
宝塔 mysql数据库锁表监控
安和琴网络技术有限公司
普陀区互联网软件开发咨询热线
公安信息网网络安全考试题目
服务器数据管理平台
兰州医药仓库管理软件开发公司
服务器托管电信
学财务的可以自学软件开发
安卓应用软件开发服务企业
宜兴智能软件开发电子
数据库ascii
onenote服务器
双倍攻击数据库设置
苏州大数据软件开发服务
网络安全与道德评课
ip服务器地址误删除怎么查询
北京手机软件开发价格
软件开发项目收入讲解
linux系统查看服务器网关
git 服务器仓库
服务器和人数
公安系统vr软件开发
软件开发公司资质证书
数据库运用技术 教学大纲
行业软件开发成本核算
一个数据库可以有几个文档
安卓应用软件开发服务企业
软件开发售前方案怎么写