mysql case when then......else end的简单使用示例

表示本人基本上没在项目中或SQL中用过CASE WHEN THEN 之类的东西。。不过偶尔还是会用到。。又不常用 容易忘记 就简单记录下(ps:虽然如果牵扯到性能问题 也不会用这种方式= = ^_^,咳咳。。不扯了。。开始。。)


/**********************************伟大的分割线*************************************/


SQL中的CASE 表达式是一种通用的条件表达式,类似于编程语言中的 if/else 语句

CASE WHEN condition THEN result 

   WHEN condition THEN result 

   .............

   [WHEN ...] 

   [ELSE result] 

END 

CASE子句可以用于任何表达式可以有效存在的地方。condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE 表达式的结果就是符合条件的 result。 如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHEN condition 为真,那么 case 表达式的结果就是在 ELSE 子句里的值。 如果省略了 ELSE 子句而且没有匹配的条件, 结果为 NULL。

其语法为:

简单CASE函数 

CASE sex 

         WHEN '1' THEN '男' 

         WHEN '2' THEN '女' 

ELSE '其他' END 

建议都使用这种,少记点,也好理解。还有其它语法,这里就先不说了。。

上个实际SQL示例:

SELECT
	id,
	mobile_phone,
	username,
	CASE job
WHEN 'java' THEN
	'java大佬'
WHEN 'dba' THEN
	'数据库管理者'
ELSE
	'unknow'
END AS alias
FROM
	ho_user

123.png


再来一个使用示例:

SELECT id,xm_id,work_item,ks_date,wc_date,sjks_date,sjwc_date,remark, 
case when wc_date > NOW() and datediff(wc_date,now()) <= 5 then '橙色警告' 
when wc_date < DATE_FORMAT(NOW(),'%Y-%m-%d') then '红色滞后' ELSE '正常' END as result
FROM (`ci_qjjh`) WHERE (1=1) and isdel = 0 and wc_date >= '2024-07-01' and ks_date <= '2024-07-31' and sjwc_date IS NULL

2323232.png



还可以配合相关聚合函数的使用。。不详细介绍了。。下边提供几个参考链接

https://www.cnblogs.com/vincentbnu/p/9495609.html

https://www.cnblogs.com/clphp/p/6256207.html



当喜悦,兴奋,无助,失望,满足,激动,疼痛,舒适,欣慰,温暖,寒冷,恐惧,沮丧,苦逼,伤悲,怜悯,落寞,愤怒,绝望,低沉,平静,忧愁,尴尬,困惑,疲劳,热情,冷漠,消极,厌世,思念,支持,抵触。这些情绪都可以用一个“操”字来表达的时候,我干嘛要和你说那么多!


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

小周博客
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复 0人评论 7,777人参与

loading