mysql踩坑----case when then用法

一、踩坑sql

UPDATE `bz_order` 
SET payment_code =
CASE
	
	WHEN payment_name = 'APPPayPal' THEN
	'paypal' 
	WHEN payment_name = 'AfterpayAfterpay' THEN
	'Afterpay' 
	WHEN payment_name = 'worldpayCredit Card' THEN
	'worldpay' 
	WHEN payment_name = 'APPPay in 4' THEN
	'PaypalPayIn4' 
		WHEN payment_name = 'FREEPAYPay with Luvme Gift Card' THEN
	'freepay' 
END;


UPDATE `bz_order` 
SET payment_name =
CASE
	
	WHEN payment_name = 'APPPayPal' THEN
	'PayPal' 
	WHEN payment_name = 'AfterpayAfterpay' THEN
	'Afterpay' 
	WHEN payment_name = 'worldpayCredit Card' THEN
	'Credit Card' 
	WHEN payment_name = 'APPPay in 4' THEN
	'Pay later with paypal' 
		WHEN payment_name = 'FREEPAYPay with Luvme Gift Card' THEN
	'Pay with Luvme Gift Card' 
END;

更新的时候,如果没有匹配到的,将会置为null。而不是,没有匹配到的就不改变。

二、函数格式

 CASE  <单值表达式>

       WHEN <condition > THEN <result>

       WHEN <表达式值> THEN <SQL语句或者返回值>

       ...

       WHEN <表达式值> THEN <SQL语句或者返回值>

       ELSE <result>

 END

condition 是一个返回布尔类型的表达式,如果表达式返回 true,则整个函数返回相应 result的值,如果表达式皆为 false,则返回 ElSE 后 result 的值,如果省略了 ELSE子句,则返回NULL。------上述sql就是由于省略了else出现了null数据

 一、简单应用场景

CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END
CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
CASE SCORE WHEN 'C' THEN '中' ELSE '不及格' END

相当于

CASE WHEN SCORE = 'A' THEN '优'
     WHEN SCORE = 'B' THEN '良'
     WHEN SCORE = 'C' THEN '中' ELSE '不及格' END 

注意:then后面的数据类型要与else后面的数据类型一直。不然会报错 

二、使用在select 字段查询中

力扣题目:1873

1、使用case when then ····else ·····end;进行查询

select employee_id,case when employee_id % 2 != 0 and name not like 'M%' then salary else 0 end as bonus from Employees order by employee_id 

2、使用if进行查询

select employee_id,if(employee_id % 2 != 0 and name not like 'M%',salary,0 ) as bonus from Employees order by employee_id

  1. if()用于判断是或否两种情况:

  2. ① select name,if(sex<=1,'正常','异常') from user;

  3. ② select name,if(sex<=1,sex,'异常') from user; -- if()也可以直接返回字段,case同理

三、力扣题应用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值