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方法。
order by c.create_date desc nulls last
order by IF(ISNULL(c.create_date),1,0), c.create_date desc
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:MySQL查询空字段或非空字段(is null和not null)
mysql中IFNULL,IF,CASE的区别介绍
mysql中is null语句的用法分享
mysql中将null值转换为0的语句
mysql 中存在null和空时创建唯一索引的方法
mysql 转换NULL数据方法(必看)
MySQL Left JOIN时指定NULL列返回特定值详解
MySQL中对于NULL值的理解和使用教程
SQL Server、Oracle和MySQL判断NULL的方法
详解MySQL中的NULL值
mysql null 排前面_Mysql实现null值排在最前/最后的方法示例相关推荐
- mysql 字段加减_Mysql数据清洗—Null值的处理技巧
1:首先要了解为什么库中会存在Null值? 答:举个例子,市面上部分产品的的注册页会要求用户填写邀请码,这样邀请人才会得到奖励,如果用户注册的时候不是被其他人邀请注册的,那么无需填写邀请码,直接注册即 ...
- mysql null 0 空_MySQL中 null与not null和null与空值''的区别
相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1.字段类型是not null,为什么可以插入空值? 2.为什么not null的效率比null高? 3.判断字 ...
- mysql中数据表null什么意思_MySQL 中NULL和空值的区别是什么?
展开全部 空值是不占用空间的,MySQL中的NULL其实是占用空间的. 不过在MySQL数据库中执行62616964757a686964616fe78988e69d8331333363396466SQ ...
- mysql存储过程默认参数_mysql 存储过程 默认值解决办法
mysql 存储过程 默认值 //在mssql的实现方式 CREATE PROCEDURE [dbo].[InsertNode] @Name nvarchar(50) = N ...
- mysql tinyint 1 范围_mysql tinyint 取值范围浅析
Tinyint占用1字节的存储空间,即8位(bit).那么Tinyint的取值范围怎么来的呢?我们先看无符号的情况.无符号的最小值即全部8位(bit)都为0,换算成十进制就是0,所以无符号的Tinyi ...
- mysql 账号权限过期_Mysql用户忘记密码及密码过期问题的处理方法
忘记密码: 步骤一:现在找到MysqL的安装目录,改掉安装目录的my-default.ini名称为my.ini(D:\MysqL\MysqL-5.7.13-winx64): 步骤二:在my.ini文件 ...
- mysql 5.x 安装_mysql 5.5.x zip直接解压版安装方法
到官网下载mysql-5.5.10-win32.zip,然后将mysql解压到任意路径,如:C:\mysql-5.5.10-win32 打开计算机->属性->高级系统设置->环境变量 ...
- mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解
前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...
- mysql十分钟分组_MYSQL每隔10分钟进行分组统计的实现方法
前言 本文的内容主要是介绍了mysql每隔10分钟进行分组统计的实现方法,在画用户登录.操作情况在一天内的分布图时会非常有用,之前我只知道用「存储过程」实现的方法(虽然执行速度快,但真的是太不灵活了) ...
最新文章
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...
- python中sys用法_python中os和sys模块的区别与常用方法总结
- android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- SVD在推荐系统中的推导及应用-简单明了
- 教你一招,自己就能检测mac
- STL中的序列式容器——stack(栈)
- zai php 里面写js,php中写入js代码
- 阿里云分布式调度系统-伏羲
- Pandas数据分析3-统计、可视化、创建数据框、时间序列、删除数据
- 大数据常用web页面
- Windows系统监控
- 从BlueSky.h和BlueSky.cpp到BlueSky.out的那些事儿
- Vue官网下载Vue.js和Vue.min.js
- 电工基础知识-配电室安全须知
- 聚合数据+新闻头条+数据入库+数据展示
- 单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系!
- Ubuntu20修改屏幕亮度
- 简单聊聊HDFS RBF第二阶段工作近期的一些进展
- 偏序集的最大反链【二分图】