177.case...when...与 if....else

1. case....when 

Case具有两种格式:

                            --简单Case函数
                                   CASE sex
                                       WHEN '1' THEN '男'
                                       WHEN '2' THEN '女' 

                                  ELSE '其他' END 

                          --Case搜索函数 
                                  CASE WHEN sex = '1' THEN '男' 
                                   WHEN sex = '2' THEN '女' 
                                   ELSE '其他' END 

1.1 语法一:(针对结果有两种的)

            CASE WHEN  条件判断 
                 THEN  '成立'  
                 ELSE '不成立 
                 END AS 别名

效果:

SELECT t1.username,t1.hobby ,t1.workage,t1.phonenumber,t1.personcardnumber,t1.address,t1.createtime,t1.departmentname,t1.jobname,

CASE WHEN  t1.status='1' 
      THEN  '在职'  
       ELSE '离职' 
 END AS STATUS

,t1.isadmin,t1.other FROM  t_user t1 ORDER BY STATUS DESC

dab45a3a872faf2d440a2419ebdd35d155d.jpg

1.2  多条件判断

SELECT t1.username,
    CASE t1.hobby 
        WHEN '1' THEN '散步'
        WHEN '2' THEN '爬山'
        WHEN '3' THEN '读书'
        WHEN '1,2' THEN '散步,爬山'
        WHEN '1,3' THEN '散步,读书'
        WHEN '2,3' THEN '爬山,读书'
        WHEN '1,2,3' THEN '散步,爬山,读书'
        ELSE '无'
    END
      AS  hobby

,t1.workage,t1.phonenumber,t1.personcardnumber,t1.address,t1.createtime,t1.departmentname,t1.jobname,t1.status,t1.isadmin,t1.other FROM  t_user t1 ORDER BY STATUS DESC

 

5048cb4566be65383c9610ebd4d92144368.jpg

1.3 处理null值

-- 处理完null  再转化
SELECT t1.username,t1.hobby ,t1.workage,t1.phonenumber,t1.personcardnumber,t1.address,t1.createtime,t1.departmentname,t1.jobname,

      CASE WHEN t1.status  IS NULL THEN '2' ELSE t1.status END AS  statuss

,t1.isadmin,t1.other FROM  t_user t1 ORDER BY STATUS DESC

5545cbf13885e0f6c058b4138f02bbb2511.jpg

2.if ...else....

if else语句只有在存储过程,触发器之类的才有,今天突然在sql上当满足某种条件上要取不同的字段值,一开始直接网上查找相关资料,哇,sql上不支持!!!

2.1  IF(expr1,'值1','值2')  AS 名称

SELECT t1.username,t1.hobby ,t1.workage,t1.phonenumber,t1.personcardnumber,t1.address,t1.createtime,t1.departmentname,t1.jobname,
      IF(t1.status = '1','在职','离职')  AS  statuss

,t1.isadmin,t1.other FROM  t_user t1 ORDER BY STATUS DESC

e6297fe353d409812ad4439eb8ce57b890b.jpg

2.2  IFNULL( expr1 , expr2 )

在 expr1 的值不为 NULL的情况下都返回 expr1,否则返回 expr2

2.3 if else语句只有在存储过程,触发器之类的才有,今天突然在sql上当满足某种条件上要取不同的字段值,一开始直接网上查找相关资料,哇,sql上不支持!!!

 

 

存储中才有

 

转载于:https://my.oschina.net/springMVCAndspring/blog/1925196

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值