1.場(chǎng)景
-
場(chǎng)景:當(dāng)我們需要將數(shù)據(jù)庫(kù)中查詢到的字段值,轉(zhuǎn)換成其他值的時(shí)候,就需要使用CASE-WHEN函數(shù)。
類似:Java中的switch-case語(yǔ)句。 分類:Case具有兩種格式。簡(jiǎn)單Case函數(shù)和Case搜索函數(shù)。
舉例說(shuō)明:舉例的場(chǎng)景是查詢name字段,對(duì)結(jié)果做如下轉(zhuǎn)換:
2.簡(jiǎn)單Case函數(shù)
- 語(yǔ)法說(shuō)明
case 列名
when 條件值1 then 選擇項(xiàng)1
when 條件值2 then 選項(xiàng)2.......
else 默認(rèn)值
end
場(chǎng)景:簡(jiǎn)答查詢結(jié)果轉(zhuǎn)化
(1)'GEM': '鄧紫棋'
(2)'JAY': '周杰倫'
(3)'allen716': '艾倫'
(4)其余:'NICK'
SQL語(yǔ)句
SELECT
CASE name
WHEN 'GEM' THEN '鄧紫棋'
WHEN 'JAY' THEN '周杰倫'
WHEN 'allen716' THEN '艾倫'
ELSE 'NICK'
END t_name <!--把查詢出的列名轉(zhuǎn)成:t_name-->
FROM user;
3.Case搜索函數(shù)
- 語(yǔ)法說(shuō)明
case when 列名 = 條件值1 then 選項(xiàng)1 when 列名 = 條件值2 then 選項(xiàng)2....... else 默認(rèn)值 end
-
場(chǎng)景說(shuō)明
更新員工表中的工資,不同等級(jí)的員工,工資乘以不同的系數(shù)
(1)等級(jí):1 --- 工資系數(shù):1.8
(2)等級(jí):2 --- 工資系數(shù):1.5
(3)等級(jí):3 --- 工資系數(shù):1.2
(4)默認(rèn) --- 工資系數(shù):1.1 -
SQL語(yǔ)句
更新
UPDATE employee
SET salary =
CASE
WHEN level = '1' THEN salary * 1.8
WHEN level = '2' THEN salary * 1.5
WHEN level = '3' THEN salary * 1.2
ELSE salary * 1.1
END