-- 簡單 case 表示式
case ***
when '1' then '男'
when '2' then '女'
else '其他' end
-- 搜尋 case 表示式
case when *** = '1' then '男'
when *** = '2' then '女'
else '其他' end
-- 女性員工的工資必須在 20 萬日元以下
constraint check_salary check
(case when *** = '2'
then case when salary <= 200000
then 1 else 0 end
else 1 end = 1 )
--- 假設現在需要根據以下條件對該錶的資料進行更新。
--- 1. 對當前工資為 30 萬日元以上的員工,降薪 10%。
--- 2. 對當前工資為 25 萬日元以上且不滿 28 萬日元的員工,加薪 20%。
--- 假設先update條件1,再update條件2會出錯,因為執行條件2時資料庫中的資料已經做了更新,不是原始資料了;
-- 所以,用 case 表示式調換主鍵值
update sometable
set p_key = case when p_key = 'a' then 'b'
when p_key = 'b' then 'a'
else p_key end
where p_key in ('a', 'b');
-- 有的學生同時加入了多個社團(如學號為 100、200 的學生),有的學 生只加入了某乙個社團(如學號為 300、400、500 的學生)。對於加入了 多個社團的學生,我們通過將其「主社團標誌」列設定為 y 或者 n 來表 明哪乙個社團是他的主社團;對於只加入了乙個社團的學生,我們將其「主 社團標誌」列設定為 n。
-- 接下來,我們按照下面的條件查詢這張表裡的資料。
-- 1. 獲取只加入了乙個社團的學生的社團 id。
-- 2. 獲取加入了多個社團的學生的主社團 id。
select std_id,
case when count(*) = 1 -- 只加入乙個社團的學生
then max(club_id)
else max(case when main_club_*** = 'y'
then club_id
else null end)
end as main_club
from studentclub
group by std_id;
在 group by 子句裡使用 case 表示式,可以靈活地選擇作為聚合 的單位的編號或等級。這一點在進行非定製化統計時能發揮巨大的威力。
在聚合函式中使用 case 表示式,可以輕鬆地將行結構的資料轉換成列結構的資料。
相反,聚合函式也可以巢狀進 case 表示式裡使用。
相比依賴於具體資料庫的函式,case 表示式有更強大的表達能力和更好的可移植性。
正因為 case 表示式是一種表示式而不是語句,才有了這諸多優點。
菜鳥教程C 高階教程
c 特性 attribute net框架提供了三種預定義特性 attributeusage conditional obsolete 預定義特性attributeusage 預定義特性attributeusage描述了如何使用乙個自定義特性類,它規定了特性可應用到的專案的型別。attributeus...
Linux Vim高階教程
命令模式下 set nu 顯示行號 set nonu 不顯示行號vim o 第乙個檔名 第二個檔名 map 快捷鍵 執行命令 命令 例如 r ls l root 此時會把ls的輸出內容 複製到文字裡面unix linux 轉dos windows unix2dos 源檔名 dos windows 轉...
springcloud高階教程
springcloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任何分布式環境中執行良好,包括開發人員自己...