PostgresQL中的NUlls first/last功能

摘要:
Nullsfirst/last函数简介Nullsfrst/llast函数主要用于orderby排序子句中,并影响Null在排序结果中的位置。Nullslast意味着在排序时,空值总是排在所有值之后,也就是说,当处理orderbyadesc时,PostgreSQL执行器认为空值小于所有值,而当处理orderby a或orderbyaasc时,执行器则认为空值大于所有值,并将空值排在第一位。当未指定Nullsfirst/last函数时,执行器认为默认情况下null值应大于所有值,并根据这些值处理orderby子句的排序结果。Nullsfirst/last函数简单地表明以下测试是在Postgres数据库下进行的。数据库版本为9.2.2,测试系统为Linux。

Nulls first/last功能简介
Nulls first/last功能主要用于order by排序子句中,影响空值Null在排序结果中的位置。简单来说,Nulls first表示Null值在排序时一直排在所有值的前面,也就是处理order by a desc时PostgresQL执行器认为Null值大于所有值,而order by a或order by a asc时执行器认为Null值小于所有值,将Null值排在前面。Nulls last表示Null值在排序时一直排在所有值的后面,也就是处理order by a desc时PostgresQL执行器认为Null值小于所有值,而order by a或order by a asc时执行器认为Null值大于所有值,将Null值排在前面。当不指定Nulls first/last功能时,执行器默认认为Null值要大于所有值,以此为依据处理order by子句的排序结果。

Nulls first/last功能简单展示
以下测试均为Postgres数据库下测试,数据库版本为9.2.2,测试系统为Linux。

普通表简单功能展示:

Create    table  test1(a int, b int);

Insertinto test1 values(1,2);

Insertinto test1 values(3,4);

Insertinto test1 values(5);

Select * from test1 order by b desc nulls first;

a    b

5

3    4

1    2

Select * from test1 order by b desc nulls last;

a    b

3    4

1    2

5

Select *from test1 order by b desc nulls;  报错

分区表简单功能展示,注意PostgresQL数据库建分区表的方式:

createtable test_hash(a int, b int);

createtable test_hash1(check(a>=0 and a<5)) inherits(test_hash);

createtable test_hash2(check(a>=5)) inherits(test_hash);

createrule test_hash_1 as on insert to test_hash where(a>=0 and a<5) do insteadinsert into test_hash1 values(NEW.a,NEW.b);

createrule test_hash_2 as on insert to test_hash where(a>=5) do instead insertinto test_hash2 values(NEW.a,NEW.b);

Insertinto test_hash values(1,2);

Insertinto test_hash values(3,4);

Insertinto test_hash values(5);

Select *from test_hash order by b desc nulls first;

a      b

5

3      4

2      2

Select *from test_hash order by b desc nulls last;

a      b

3      4

1      2

5

以上均是select语句中的order by子句进行的Nulls first/last功能展示,创建索引等其他需要order by子句的地方同理。这里只是简单的展示了一下功能,有时间会写一些剖析PostgresQL数据库的文章出来

免责声明:文章转载自《PostgresQL中的NUlls first/last功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在phpstorm上安装代码检查工具MySQL8.0新特性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer动态执行SQL语句sp_executesql、Exec

sp_executesql语法 sp_executesql[@stmt=]stmt[{,[@params=]N'@parameter_name data_type[,...n]'}{,[@param1=]'value1'[,...n] }] 参数 [@stmt=]stmt 包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt必...

python轻量级orm框架 peewee常用功能速查

peewee常用功能速查 peewee 简介 Peewee是一种简单而小的ORM。它有很少的(但富有表现力的)概念,使它易于学习和直观的使用。 常见orm数据库框架 Django ORM peewee SQLAlchemy Django ORM 优点:易用,学习曲线短和Django紧密集合,用Django时使用约定俗成的方法去操作数据库缺点:Quer...

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表) 前言 版本:11.2.0.4.0。 Oracle 11G中没特殊要求还是要建议关闭审计功能:alter system set audit_trail = none scope=spfile  sid='*'; 由于默认审计数据的AUD$和FGA_LOG$表在system表空间,...

R语言实现 朴素贝叶斯算法

library(NLP)library(tm)library(wordcloud)library(RColorBrewer)library(e1071)library(gmodels)setwd('C:/Users/E0399448/Desktop/机器学习')###spam 垃圾短信 ham非垃圾短信 ###数据地址:https://github.com...

vue 项目用webpack打包后运行后找不到.ttf及.woff文件

参考:https://www.cnblogs.com/me168/archive/2004/01/13/10424955.html webpack.base.config 文件中 修改前: { test: /.css$/, use: ExtractTextPlugin.extract({ use: ['css-loader?minimize', 'a...

sql学习笔记--存储过程

 存储过程(stored procedure)有时也称sproc,它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中。   存储过程中有输入参数,输出参数以及返回值等。 一、创建存储过程   创建存储过程的方法和创建数据库中任何其他对象一样,除了他使用AS关键字外。存储过程的基本语法如下:   CRE...