zoukankan      html  css  js  c++  java
  • PostgresQL中的NUlls first/last功能

    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数据库的文章出来

  • 相关阅读:
    Java打jar包详解
    用户体验评价
    本周总结(13)
    本周总结(12)
    第一阶段意见评论
    本周总结(11)
    冲刺计划第十天
    冲刺计划第九天
    冲刺计划第八天
    冲刺计划第七天
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/4826332.html
Copyright © 2011-2022 走看看