Mysql实现null值排在最前/最后的操作代码
- 更新时间:2020-06-17 09:55:44
- 编辑:家赛玉
前言
我们已经知道 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方法。
<if test="dbType=='oracle'"> order by c.create_date desc nulls last </if> <if test="dbType=='mysql'"> order by IF(ISNULL(c.create_date),1,0), c.create_date desc </if>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。
相关教程
-
mysql在动态SQL内获取返回值的方法详解
本篇文章是对mysql存储过程在动态SQL内获取返回值进行了详细的分析介绍,需要的朋友参考下
发布时间:2019-09-24
-
详细介绍mysql 批量更新与批量更新多条记录的不同值实现方法技巧
在mysql中批量更新我们可能使用update,replace into来操作,下面小编来给各位同学详细介绍mysql 批量更新与性能吧
发布时间:2020-02-05
-
MySQL表字段设置默认值的方法
默认值的设置很重要,比如在插入的时候一些字段是可以省略的,这会带来很多的方便,接下来将要介绍MySQL表字段设置默认值感兴趣的你可以千万不要走开啊,希望本文对你有所帮助
发布时间:2020-01-17
-
PHP+MySQL程序设计及项目开发
大小:105.1MBPHP+MySQL
-
PHP、MySQL与JavaScript学习手册(第4版)
本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载
大小:76 MBPHP学习手册电子书
-
高性能MySQL
大小:392 MBMySQL电子书
-
MySQL运维内参
《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践》是一本介绍MySQL数据库知识的专业书籍,从核心原理到最佳实践,深入浅出、抽丝剥茧地进行讲解,不仅从源码和运维两个角度介绍
大小:162 MBMySQL电子书
-
PHP与MySQL高性能应用开发
PHP与MySQL高性能应用开发书中不仅讲解了OOP、设计模式,也讲解了如何进行性能优化和调试。甚至,还对于语言之外的代码重构进行了讲解,本书面向的对象是有一定PHP基础,但是又想深入学习的PHP开发者,欢迎免费下载
大小:60.5 MBPHP开发电子书
-
MySQL王者晋级之路
本书深入剖析MySQL数据库体系结构,实战演练备份恢复、主从复制,详解高可用集群架构的设计与实践过程,详细梳理优化思路,展现新版本的特性,并与真实生产案例相结合,通过核心原理到“王者”实战,全面覆盖MySQL数据库的知识点
大小:76.5 MBMySQL数据库电子书