1. 程式人生 > 其它 >case when else end使用

case when else end使用

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來定義別名。