Hello,大家好!我是程序員阿飛!今天我們主要學習一下SQL中 case when then else end用法。
1、第一種情況
【語法】
CASE 表達式1
WHEN 表達式2 THEN 表達式3
...
WHEN 表達式4 THEN 表達式5
[ELSE 表達式6]
END
【原理】
將表達式1的值與各WHEN字句後面的表達式的值進行比較,如果兩者相等,則返回THEN後面的值,然後跳出case語句,
否則返回ELSE子句中的表達式的值。ELSE子句是可選項,當case語句中不包含else子句時,若所有比較都失敗,則case語句
將返回NULL。
【例子】從數據表stud_info中,選取stud_id、grade,如果grade爲“男”則輸出“M”,如果爲“女”輸出“F”。
SELECT stud_id, sex=CASE gender
WHEN ’男’ THEN ’M’
WHEN ’女’ THEN ’F’
END
FROM stud_info
2、第二種情況
【語法】
CASE WHEN 表達式2 THEN 表達式3
...
WHEN 表達式4 THEN 表達式5
[ELSE 表達式6]
END
【原理】
首先測試WHEN後的條件表達式的值,如果其值爲真,則返回THEN後面的表達式的值,否則測試下一個WHEN子句中的表達式的值,
如果所有WHEN子句後的表達式的值都爲假,則返回ELSE後的表達式的值,如果在CASE語句中沒有ELSE子句,則CASE表達式返回NULL。
【例子】從stud_grade表中查詢所有同學考試成績情況,凡成績爲空者輸出“未考”、小於60分輸出“不及格”、60分至70分輸出“及格”、
70分至90分輸出“良好”、大於或等於90分時輸出“優秀”。
SELECT
stud_id,
NAME,
score = CASE
WHEN grade IS NULL THEN
’未考’
WHEN grade < 60 THEN
’不及格’
WHEN grade >= 60
AND grade < 70 THEN
’及格’
WHEN grade >= 70
AND grade < 90 THEN
’良好’
WHEN grade >= 90 THEN
’優秀’
END
FROM
stud_grade
【PS】