当前位置:网站首页>mysql踩坑----case when then用法

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

2022-08-10 19:07:00 幼儿园里的山大王

一、踩坑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后面的数据类型一直。不然会报错 

二、力扣题应用

原网站

版权声明
本文为[幼儿园里的山大王]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_42972832/article/details/126244098