1. 程式人生 > >關於hibernate中hql語句 case when的寫法

關於hibernate中hql語句 case when的寫法

case when select rom org nat where for code 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

關於hibernate中hql語句 case when的寫法