首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL排序时,随意控制NULL显示位置的几种方法

MySQL排序时,随意控制NULL显示位置的几种方法

作者头像
披头
发布2022-08-22 10:35:10
发布2022-08-22 10:35:10
3.5K0
举报
文章被收录于专栏:datartisandatartisan

在MySQL中,NULL 值被认为比任何 非NULL 值低,因此,当顺序为 ASC(升序)时,NULL 值出现在第一位,而当顺序为 DESC(降序)时,则排序在最后。

如果想指定存在 NULL 的行出现在首行或者末行,需要特殊处理。

使用如下代码构建示例表:

代码语言:javascript
复制
CREATE TABLE user (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(5),
    date_login DATE,
    PRIMARY KEY (id)
);

INSERT INTO user(name, date_login) VALUES
(NULL,    '2017-03-12'), 
('john',   NULL), 
('david', '2016-12-24'), 
('zayne', '2017-03-02');

既然排序时,NULL 的值比 非NULL 值低(可以理解为 0 或者 -∞),那么我们在排序时就要对这个默认情况进行特殊处理以达到想要的效果。

一般有如下两种需求:

NULL 值排在末行,非NULL 值升序排列

对于数字或者日期类型,可以在排序字段前添加一个负号(minus)来得到反向排序。(-1、-2、-3....-∞

对于字符型或者字符型数字,此方法不一定能得到期望的排序结果,可以使用 IS NULL 比较运算符。另外 ISNULL( ) 函数等同于使用 IS NULL 比较运算符。

还可以使用 COALESCE 函数实现需求

NULL 值排在首行,非NULL 值倒序排列

对于数字或者日期类型,可以在排序字段前添加一个负号(minus)来实现。(-∞...-3、-2、-1

对于字符型或者字符型数字,此方法不一定能得到期望的排序结果,可以使用 IS NOT NULL 比较运算符。另外 !ISNULL( ) 函数等同于使用 IS NOT NULL 比较运算符。

还可以使用 COALESCE 函数实现需求

通过上边介绍的方法,即可实现在排序时,随意控制 NULL 的显示位置,你学会了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学探究 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NULL 值排在末行,非NULL 值升序排列
  • NULL 值排在首行,非NULL 值倒序排列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档