mysql-条件判断语句case..when..then
需求:
查询读者信息表,根据读者的余额判断读者的会员等级。
1、根据身份证号查询读者的余额
2、如果用户余额不小于500,则用户为黄金会员;如果用的余额不小于300,则用户为高级会员;如果用户余额不小于100,则为普通会员;如果用户余额小于100,则不是会员,不能借书。
需要显示用户的姓名,余额,等级。
读者信息表:
create table reader(
card_id char(18) primary key,
name varchar(20) not null,
sex enum('男','女','保密') default'保密',
age tinyint not null,
phone_number char(11) not null,
balance decimal(6,2) default 200
);
insert into reader values('330100199201231104','小明','男',29,'15787223423',70);
insert into reader values('330100199201231105','小红','女',21,'15787223424',230);
insert into reader values('330100199201231106','王迷','男',19,'15787223425',530);
insert into reader values('330100199201231107','李思','女',24,'15787223426',230);
insert into reader values('330100199201231108','小王','女',32,'15787223427',120);
insert into reader values('330100199201231109','王霞','女',26,'15787223428',300);
sql脚本:
delimiter//
create function mylevel(myid char(18))
returns varchar(20)
begin
declare mybalance decimal(6,2);
declare level varchar(20);
select balance into mybalance from reader where card_id=myid;
case
when mybalance>=500 then set level='黄金会员';
when mybalance>=300 then set level='高级会员';
when mybalance>=100 then set level='普通会员';
else set level='不是会员,不能借书';
end case;
return level;
end//
delimiter;
select name,balance,mylevel(card_id) level from reader;
运行结果:
还没有评论,来说两句吧...