MYSQL(九)CASE结构

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 18:09   22   0

情况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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP