前言:遇到這樣一個需求,有一門成績,成績中只記錄了學生的分數,現在需要統計學生的分數等級,100-90分為優秀,90-60分為及格,60-0分為不及格。這個需求就可以用CASE語句來表達。
case語句分為簡單case語句和可搜索case語句。
1.簡單case的語法為
CASE case_expression WHEN when_expression_1 THEN commands WHEN when_expression_2 THEN commands ... ELSE commands END
這種適合固定的值,比如性別,1男,2女這種
例子:將下圖中sex換成漢字的性別,1男,2女。
SELECT *, ( CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' END ) '性別' FROM `user`
結果如下圖
2.可搜索case語句,這種適應表達式與一組不同的值進行匹配。
語法為
CASE WHEN condition_1 THEN commands WHEN condition_2 THEN commands ... ELSE commands END
例子就是最開始提到的
SELECT *, ( CASE WHEN score>=90 THEN '優秀' WHEN score>=60 THEN '及格' ELSE '不及格' END ) '等級' FROM math ORDER BY score DESC
結果如下
還有是根據不同的值去更新數據
需求是根據RelationResourceCode 前四位的值 更新RelationResourceType 的值
BZWX--》standard
JGGF--》specification
DXAL--》case
ZCFG--》policy
ZSCT--》knowledgeitem
語句如下:
update ResourceRelations set RelationResourceType = ( CASE left(RelationResourceCode,4) WHEN 'BZWX' THEN 'standard' WHEN 'JGGF' THEN 'specification' WHEN 'DXAL' THEN 'case' WHEN 'ZCFG' THEN 'policy' WHEN 'ZSCT' THEN 'knowledgeitem' END )
結果如下