關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM