利用sql进行排序

编辑
  • 文档创建者:axing
  • 浏览次数:3549次
  • 编辑次数: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



    附件列表


    主题: 报表应用
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]