首页数据库MySQL下null值怎么实现排在最前边

MySQL下null值怎么实现排在最前边

时间2024-03-24 01:12:03发布访客分类数据库浏览1489
导读:这篇文章主要给大家介绍“MySQL下null值怎么实现排在最前边”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“MySQL下null值怎么实现排在最前边”文章能对大家有所帮...
这篇文章主要给大家介绍“MySQL下null值怎么实现排在最前边”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“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方法。

 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下null值怎么实现排在最前边”的文章就介绍到这了,感谢各位的阅读,更多相关MySQL下null值怎么实现排在最前边内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

mysqlnull

若转载请注明出处: MySQL下null值怎么实现排在最前边
本文地址: https://pptw.com/jishu/651721.html
C语言怎样打印菱形效果,代码是什么 MySQL如何优化,要做什么

游客 回复需填写必要信息