1.語法
#情況一:類似於switch,一般用於實現的等值判斷 case 變量或表達式或字段 when 要判斷的值 then 返回的值1或語句1(語句要加;) when 要判斷的值 then 返回的值2或語句2(語句要加;) ... else 要返回的值n end 【case;】(如果是放在begin end中需要加上case,如果放在select后面不需要) #情況二:類似於多重if,一般用於實現區間判斷 case when 要判斷的條件1 then 返回的值1或語句1(語句要加;) when 要判斷的條件2 then 返回的值2或語句2(語句要加;) ... else 要返回的值n end 【case;】(如果是放在begin end中需要加上case,如果放在select后面不需要)
2.特點
- 可以作為表達式,嵌套在其他語句中使用,可以放在任何地方,BEGIN END中或BEGIN END外面
- 也可也作為獨立語句去使用,只能放在BEGIN END中
- 如果WHEN中的值滿足或條件成立,則執行對應的THEN后面的語句,並且結束CASE,如果都不滿足,則執行ELSE中的語句或值
- ELSE可以省略,如果ELSE省略了,並且所有WHEN條件都不滿足,則返回NULL
3.案例
#1.創建存儲過程,根據傳入的成績,來顯示等級,比如傳入的成績:90-100,顯示A。80-90,顯示B。60-80,顯示C,否則顯示D DELIMITER $ CREATE PROCEDURE test_case (IN score INT) BEGIN CASE WHEN score>=90 AND score<=100 THEN SELECT 'A'; WHEN score>=80 THEN SELECT 'B'; WHEN score>=60 THEN SELECT 'C'; ELSE SELECT 'D'; END CASE; END$ CALL test_case(95)$
