case when else end使用
阿新 • • 發佈:2021-08-20
1.
SELECT s.s_id, s.s_name, s.s_sex, CASE WHEN s.s_sex = '1' (要篩選的字元)THEN '男' (要改成的字元) WHEN s.s_sex = '2' (要篩選的字元)THEN '女'(要改成的字元) ELSE '其他'(要改成的字元) ###如果匹配到s.s_sex這一列 有等於1的,改為男。等於2改為女。
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
......
2.
SELECT s.s_id, s.s_name, s.s_sex, CASE s.s_sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' ###在s.s_sex 表,如果=1,改為男,=2,改為女 END as sex, s.s_age, s.class_id FROM t_b_student s WHERE .............
s_id | s_name | s_sex | sex | s_age | class_id |
1 | 張 | 1 | 男 | 12 | 100 |
2 | 李 | 2 | 女 | 15 | 100 |
3 | 王 | 3 | 其他 | 6 | 100 |
Case具有兩種格式:簡單Case函式和Case搜尋函式。
簡單Case函式:
CASE sex
WHEN‘1’THEN‘男’
WHEN‘0’THEN‘女’
ELSE‘其他’END
Case搜尋函式:
CASE WHEN sex=‘1’THEN‘男’
WHEN sex=‘0’THEN‘女’
ELSE‘其他’END
顯然,簡單Case函式生在簡潔,但是它只適用於這種單欄位的單值比較,而Case搜尋函式的優點在於適用於所有比較的情況。
還有一個需要注意的問題,Case函式在滿足了某個符合條件後,剩下的條件將會被自動忽略,因此,即使滿足多個條件,執行過程中也只認第一個條件。
在使用CASE WHEN時,可以把它當作一個沒有欄位名的欄位,欄位值根據條件確認,在需要使用欄位名時可以是用as來定義別名。