数据库 case when then else end 操作

今天第一次接触数据库中的case when then else end语法,踩了个坑,折腾了两个小时才找到原因,在此分享一下!!!

首先,在MySQL中创建一张数据库表t_user,其中属性包括

属性类型
u_idint
u_namevarchar
u_ageint
u_gendervarchar
u_gradeint

在数据库中插入如下数据:

insert into t_user(u_name , u_age , u_gender , u_grade) values('张三' , 20 , 1 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('李四' , 30 , 2 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('王五' , 40 , 3 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('老王' , 50 , 1 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('name_1' , 60 , 2 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('name_2' , 70 , 3 , 80) ;
insert into t_user(u_name , u_age , u_gender , u_grade) values('name_3' , 80 , 1 , 80) ;

查询数据库中的内容如下:

select * from t_user ;


查询表中的内容,并使用case when 语句将性别1 2 3 转换为 男、女或其他:

案例一:(简单case函数)

select  u_id 'ID' , u_name '姓名' , u_age '年龄' ,
case u_gender
when  1 then '男' 
when  2 then '女'
else '其他' end '性别' ,
u_grade '成绩'
from t_user ;

结果一:



案例二:(case搜索函数)

select  u_id 'ID' , u_name '姓名' , u_age '年龄' ,
case
when u_gender = 1 then '男' 
when u_gender = 2 then '女'
else '其他' end '性别' ,
u_grade '成绩'
from t_user ;

结果二:



在这里案例一和案例二的方法是等价的,但是请注意,在方法二的case关键字后面没有写要匹配的属性字段 u_gender!!!!这才是重点。。。


如果在方法二中加上属性字段会怎样???

案例三:

select  u_id 'ID' , u_name '姓名' , u_age '年龄' ,
case u_gender
when u_gender = 1 then '男' 
when u_gender = 2 then '女'
else '其他' end '性别' ,
u_grade '成绩'
from t_user ;

结果三:


这个结果比较奇怪!!!我也没搞懂为什么会这样!!!


使用 case when 语法时,总结如下:

1. 如果使用的是 简单case函数 ,需要在case关键字后面加上需要匹配的属性字段;

2. 如果使用的是 case搜索函数 ,千万不要在case关键字后面加上需要匹配的属性字段,属性字段在when条件判断中直接使用即可。


以上仅代表个人的观点和用法,如有问题请多指点。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值