MYSQL(九)CASE結構

情況1:類似於JAVA中的SWITCH語句,一般用於實現等值判斷

語法:

           CASE 變量|表達式|字段

           WHEN 要判斷的值 THEN 返回的值1或語句1;

            WHEN 要判斷的值 THEN 返回的值2或語句2;

             ......

            ELSE 要返回的值n或語句n;

            END CASE;

情況2:類似於JAVA中的多重語句,一般用於實現區間判斷

語法:

           CASE

           WHEN 要判斷的條件1 THEN 返回的值1或語句1;

           WHEN 要判斷的條件2 THEN 返回的值2或語句2;

           ......

            ELSE 要返回的值n或語句n;

             END CASE;

 

特點:

可以作爲表達式,嵌套在其它語句中使用,可以放在BEGIN END中,也可以放在BEGIN END外面

也可以作爲獨立的語句去使用,只能放在BEGIN END中

 

如果WHEN中的值滿足或條件成立,則執行對應的THEN後面的語句,並且結束CASE

如果條件都不滿足,則執行ELSE中的語句或值

 

ELSE可以省略,如果ELSE省略了,並且所有WHEN條件都不滿足,則返回NULL

 

創建存儲過程,根據傳入的成績,來顯示等級,比如傳入的成績:90-100,顯示A,80-90,顯示B,60-80,顯示C,否則顯示D

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)$

 

實現多重分支

語法:

if 條件1 then 語句1;

elseif 條件2 then 語句2;

...

[else 語句n;]

end if;

應用在BEGIN END中

根據傳入的成績,來顯示等級,比如傳入的成績:90-100,返回A,80-90,返回B,60-80,返回C,否則返回D

CREATE FUNCTION test_if(score INT) RETURN CHAR

BEGIN

            IF score>=90 AND score<=100 THEN RETURN 'A';

             ELSEIF score>=80 THEN RETURN 'B';

             ELSEIF score>=60 THEN RETURN 'C';

             ELSE RETURN 'D';

             END IF;

END $

SELECT test_if(86)$

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章