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的单表查询语句,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • Oracle Table Demo语句应用介绍

    Oracle Table Demo语句应用介绍

    在开发过程中可能会用到oracle table demo 操作语句,本文将以此进行介绍,需要的朋友可以参考下
    2012-11-11
  • 设置oralce自动内存管理执行步骤

    设置oralce自动内存管理执行步骤

    设置内存管理首先要启用oracle自动内存管理需要shutdown ,restart,接下来为大家介绍下详细的执行步骤,感兴趣的朋友可以参考下哈
    2013-04-04
  • Oracle数据库表中字段顺序的修改方法

    Oracle数据库表中字段顺序的修改方法

    这篇文章主要给大家介绍了关于Oracle数据库表中字段顺序的修改方法,在介绍修改的方法之前先给大家介绍了Oracle数据库表新建字段的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Oracle数据库如何创建第一张表

    Oracle数据库如何创建第一张表

    这篇文章主要介绍了Oracle数据库如何创建第一张表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 详解Oracle数据库各类控制语句的使用

    详解Oracle数据库各类控制语句的使用

    本文我们主要介绍了Oracle数据库中各种控制语句的使用,包括逻辑控制语句、Case when的使用、While的使用以及For的使用等,希望本次的介绍能够对您有所收获!
    2015-09-09
  • Oracle触发器trigger详解

    Oracle触发器trigger详解

    这篇文章主要为大家详细介绍了Oracle触发器trigger,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Oracle 数据库针对表主键列并发导致行级锁简单演示

    Oracle 数据库针对表主键列并发导致行级锁简单演示

    本文简单演示针对表主键并发导致的行级锁,锁的产生是因为并发。没有并发,就没有锁。并发的产生是因为系统需要,系统需要是因为用户需要,感兴趣的你可以参考下哈,希望可以帮助到你
    2013-03-03
  • Oracle截取字符串去掉字段末尾指定长度的字符

    Oracle截取字符串去掉字段末尾指定长度的字符

    这篇文章主要介绍了Oracle截取字符串去掉字段末尾指定长度的字符 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 在OracleE数据库的字段上建立索引的方法

    在OracleE数据库的字段上建立索引的方法

    在OracleE数据库的字段上建立索引的方法...
    2007-04-04

最新评论