加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Mysql实现null值排在最前 最后的方式示例

发布时间:2022-03-13 16:51:45 所属栏目:编程 来源:互联网
导读:我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true。 IS NOT 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值排在最前或者最后。

  下面给出解决方法:
  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方法。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读