Oracle实现------如果某字段存在某字符串,则置顶,否则其他数据按时间排序

Oracle实现------如果某字段存在某字符串,则置顶,否则其他数据按时间排序

最近在做公司的一个项目,用的oracle数据库,也是不太熟悉,这几天就接到了一个新需求。
要求
----如果在“descr”字段中,存在“已更新租赁到期时间”,则将其置顶,其余数据按时间排序
最终得出结果如下:

 select * from emp order by 
 case when descr like "已更新租赁到期时间" then 1
 else 2
 end,
 create_time

算了,就以Oracle数据库自带的emp表为例子,我们看看如下示例:

select * from emp
order by case
   when ENAME
	 like '%IN%' then 1
	 else 2
   end, 
	 HIREDATE desc;

以上sql的意思就是———在emp表中根据ENAME字段中包含“IN”字符串的数据进行排序,排序的优先级为1,否则优先级为2,最后还要按照“HIREDATE”排序,结果如下:
在这里插入图片描述
可以看到,如图中我标识的,优先会找到带“IN”字符串的数据,然后这些带”IN“字符串的还会根据时间排序,而其他不带“IN”字符串的数据则是直接根据时间排序

以上就是我的感悟总结了,又学到了”新姿势“,美滋滋

------我是“道祖且长”,一个在职场上苟且偷生的java程序员

posted @ 2022-06-14 08:50  道祖且长  阅读(278)  评论(0)    收藏  举报