利用sql进行排序

  • 文档创建者:axing
  • 编辑次数:3次
  • 最近更新:Kevin-s 于 2019-06-17
  • 1. 描述

    在对数据进行展示之前,如果没有对数据进行排序,会使数据看起来一片混乱,不能清晰地看到各数据之间的关系。而排序,也有各种各样的需求,如按时间排序,按数字排序,按中文排序等,如果我们只会使用使用设计器的 高级排序扩展后排序,将无法满足各种特殊的排序需求。


    2. 解决方案

    通过 SQL 直接在数据库中排序,这样不仅性能最佳,而且各数据库对各种特殊的排序需求也比较支持,这里以 Oracle 为例


    3. 示例

    3.1 简单的升序、降序

    使用 asc 进行升序排序,如select * from table order by id asc     注:asc 可以省略,默认为升序

    使用 desc 进行降序排序,如select * from table order by id desc 


    3.2 空值排序

    如果我们想要排序后空值永远在前面可以使用 nulls first,如:

    222
    同理如果想要空值永远排在后面可以使用 nulls last,如:

    222


    3.3 随机排序

    如果想要查询出来的数据在每次展示的时候,展示顺序各不相同,则可以使用随机排序:

    select * from emp order by dbms_random.value()


    3.4 中文排序

    中文的排序默认是以 ASCII 码来排序的,由于 ASCII 码排序与拼音排序大部分相同,常常导致人们误以为默认根据拼音来排序,为了证明这点,我特意创造了个繁体字:

    order by name 等同于 order by ascii(name)

    222
    按拼音排序可以使用 order by nlssort(name, 'NLS_SORT=SCHINESE_PINYIN_M')

    222
    按部首排序可以使用 order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M')

    222
    按笔画排序可以使用order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M')

    222


    3.5 自定义排序

    使用 instr( ) 函数来自定义:

    222
    使用 decode( ) 函数来自定义:

    222
    使用 case when..then...来自定义(不推荐):

    222



    附件列表


    主题: 报表应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!