Oracle用decode函数或CASE-WHEN实现自定义排序

 更新时间:2020年05月18日 09:01:09   作者:南瓜慢说  
这篇文章主要介绍了Oracle用decode函数或CASE-WHEN实现自定义排序功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

1 问题

SQL排序,只要在order by后面加字段就可以了,可以通过加descasc来选择降序或升序。但排序规则是默认的,数字、时间、字符串等都有自己默认的排序规则。有时候需要按自己的想法来排序,而不是按字段默认排序规则。

比如字段值为英文字段:MondayTuesdayWednesday等,如果按字段默认排序规则就为:

Friday
Monday
Saturday
Sunday
Thursday
Tuesday
Wednesday

实际我需要的是:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

2 decode函数

通过decode函数可以实现,如下:

select * from table_date
order by 
decode(DateStr,
  'Monday',1
  'Tuesday',2
  'Wednesday',3
  'Thursday',4
  'Friday',5
  'Saturday',6
  'Sunday',7,
  0);

后面的数字可以不连续。

3 case when语句

另外,还可以用case when来实现:

select * from table_date
order by (CASE DateStr
  WHEN 'Monday' then 1
  WHEN 'Tuesday' then 2
  WHEN 'Wednesday' then 3
  WHEN 'Thursday' then 4
  WHEN 'Friday' then 5
  WHEN 'Saturday' then 6
  WHEN 'Sunday' then 7
   ELSE 0
   END);

4 总结

当然,把字段直接赋值为对应的数字效率会高很多,通过另外一张表再建立映射关系。

到此这篇关于Oracle用decode函数或CASE-WHEN实现自定义排序的文章就介绍到这了,更多相关Oracle用decode函数或CASE-WHEN实现自定义排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle数据库添加/删除/修改表字段超详细指南

    Oracle数据库添加/删除/修改表字段超详细指南

    这篇文章主要给大家介绍了关于Oracle数据库添加/删除/修改表字段的超详细指南, 本文主要是关于Oracle数据库表中字段的增加、删除、修改和重命名的操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Oracle如何直接运行OS命令(上)

    Oracle如何直接运行OS命令(上)

    Oracle如何直接运行OS命令(上)...
    2007-03-03
  • DBF 文件恢复 ORACLE 数据库的方法

    DBF 文件恢复 ORACLE 数据库的方法

    这篇文章主要介绍了DBF 文件 ORACLE 数据库恢复的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Oracle中查询表结构的6种方法总结

    Oracle中查询表结构的6种方法总结

    工作中查看oracle表结构经常会遇到,下面这篇文章主要给大家介绍了关于Oracle中查询表结构的6种方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Oracle如何获取指定表名称批量修改表中的字段类型

    Oracle如何获取指定表名称批量修改表中的字段类型

    这篇文章主要给大家介绍了关于Oracle如何获取指定表名称批量修改表中字段类型的相关资料,文中通过示例代码介绍的非常详细,对大家学习使用oracle具有一定的参考价值,需要的朋友可以参考下
    2023-08-08
  • Oracle中的半联结和反联结详解

    Oracle中的半联结和反联结详解

    这篇文章主要介绍了Oracle中的半联结和反联结详解,也称半连接和反连接,其实就是in、exists,需要的朋友可以参考下
    2014-07-07
  • 教你如何通过PL/SQL创建序列和触发器实现表自增字段

    教你如何通过PL/SQL创建序列和触发器实现表自增字段

    本文给大家分享如何通过PL/SQL创建序列和触发器实现表自增字段,需要注意的是,在数据库操作中,触发器的使用对系统资源耗费相对较大,考虑到大表操作的性能问题, 我们尽可能的减少触发器的使用,改为直接手动调用序列函数即可
    2022-11-11
  • oracle中fdisk导致的ASM磁盘数据丢失的解决方法

    oracle中fdisk导致的ASM磁盘数据丢失的解决方法

    oracle中fdisk 导致的ASM磁盘数据丢失 有需要的朋友可参考一下
    2012-10-10
  • Oracle数据库表空间超详细介绍

    Oracle数据库表空间超详细介绍

    Oracle数据库的数据存放在表空间中,表空间是一个逻辑的概念,它是由数据文件组成,表空间大小由数据文件的数量和大小决定,下面这篇文章主要给大家介绍了关于Oracle数据库表空间的相关资料,需要的朋友可以参考下
    2023-05-05
  • 利用windows任务计划实现oracle的定期备份

    利用windows任务计划实现oracle的定期备份

    我们搞数据库管理系统的经常会遇到数据库定期自动备份的问题,有各种各样的方法,这里介绍一种利用windows任务计划实现oracle定期备份的方法供大家分享。
    2009-08-08

最新评论