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程序员