if函数
语法:IF(表达式1,表达式2,表达式3);
如果表达式1成立(true),返回表达式2的值;如果表达式1不成立(false),返回表达式3的值;
可使用在任何地方
if语句
if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
else 语句 n;
end if;
应用场景:只能用在begin end中(存储过程或者函数)
存储过程使用
delimiter $
create procedure test_ifproce(IN score int)
begin
if score >= 90 and score <= 100 then
select 'A';
elseif score >= 80 then
select 'B';
elseif score >= 60 then
select 'C';
else
select 'D';
end if;
end $
set @score=90;
call test_ifproce(@score);
函数使用
delimiter $
create function test_ifproce2( score int) returns 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 $
set @score=20;
select test_ifproce2(@score);
case
case的第一种类型
#使用在begin end 里面
case 表达式
when 值1 then 语句1;
when 值2 then 语句2;
when 值3 then 语句3;
......
else 语句n;
end case;
#使用在begin end 外面
case 表达式
when 值1 then 值1;
when 值2 then 值2;
when 值3 then 值3;
......
else 值n;
end case;
case的第二种类型
#使用在begin end 里面
case 表达式
when 条件1 then 语句1;
when 条件2 then 语句2;
when 条件3 then 语句3;
......
else 语句n;
end case;
#使用在begin end 外面
case 表达式
when 条件1 then 值1;
when 条件2 then 值2;
when 条件3 then 值3;
......
else 值n;
end case;
example
创建存储过程,根据传入成绩,显示等级(90-100,显示A,80-90,显示B)
delimiter $
create procedure test_proce(IN score int ,OUT level varchar(10))
begin
case
when score>=90 and score<=100 then select 'A' into level;
when score>=80 then select 'B' into level;
when score>=60 then select 'C' into level;
else select 'D' into level;
end case ;
end $
set @score=40;
set @level='';
call test_proce(@score,@level);
select @level;
网友评论