关于hibernate中hql语句 case when的写法

java hql case when的用法

if(null == sorter){
            hql.append(" order by m.mDate desc,case when m.mealTime = 'morning' then '1' when m.mealTime = 'noon' then '2' when m.mealTime = 'night' then '3' when m.mealTime = 'midnight' then '4' end ");
        }

注:

  上面hql语句的意思可以理解为:

    通过mDate 降序排序,同时还得满足当mealTime = 'morning' 时,在日期的基础上排第一位,当mealTime = 'noon' 同理,以此类推即可。

case when既可以写在select后面,排序的时候也可以写在order by后面

 

下面是sql的case when写法

复制代码
select t.id,t.name,t.code,t.select_time,t.now_level,
case t.now_level WHEN '县处级正职领导职务'  THEN 38  
WHEN '县处级正职非领导职务'  THEN 36 
WHEN '县处级副职领导职务'  THEN 34  
WHEN '县处级副职非领导职务'  THEN 31 
WHEN '乡科级正职领导职务'  THEN 28 
WHEN '乡科级正职非领导职务'  THEN 26 
WHEN '乡科级副职非领导职务'  THEN 21 
WHEN '科员'  THEN 20 
WHEN '新录用未定级'  THEN 19 
WHEN '五级职员'  THEN 18 
WHEN '六级职员'  THEN 15 
WHEN '七级职员'  THEN 13 
WHEN '八级职员'  THEN 11 
WHEN '九级职员'  THEN 9 
WHEN '市管企业正职'  THEN 6 
WHEN '市管企业副职'  THEN 3 
WHEN '企事业其它'  THEN 1 END leve

FROM Torg_Cadre t WHERE  t.status=2
ORDER BY code desc,(date_format(select_time,'%Y')) desc, leve desc;
复制代码

多字段排序,每个字段后面都加desc或asc

posted @   侯爵吖  阅读(8418)  评论(0编辑  收藏  举报
编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf
点击右上角即可分享
微信分享提示