表示本人基本上没在项目中或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
再来一个使用示例:
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
还可以配合相关聚合函数的使用。。不详细介绍了。。下边提供几个参考链接
https://www.cnblogs.com/vincentbnu/p/9495609.html
https://www.cnblogs.com/clphp/p/6256207.html
当喜悦,兴奋,无助,失望,满足,激动,疼痛,舒适,欣慰,温暖,寒冷,恐惧,沮丧,苦逼,伤悲,怜悯,落寞,愤怒,绝望,低沉,平静,忧愁,尴尬,困惑,疲劳,热情,冷漠,消极,厌世,思念,支持,抵触。这些情绪都可以用一个“操”字来表达的时候,我干嘛要和你说那么多!
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论