sql 语句中case when 习惯性错误

使用场景:在一些小的需求,为了一次性将数据统计到位,在代码中少出现一些转化的代码,习惯性的在sql语句中加一些判空、枚举之类的进行转化,尤其是在现场数据治理的时候,比方说现场要导出一些基础台账数据等,这个时候就可以很方便的提供一条sql语句(开发过程一般是不建议在sql语句中处理这种转化逻辑的,严格在定义枚举在转化层进行处理)

常规写法:

sql 复制代码
case t1.is_enable
        when 1 then 0
        when 0 then 1
        when 2 then 2
        end as isEnable

错误写法:

sql 复制代码
case t1.start_date
 when is null then ''
 else FROM_UNIXTIME(t1.start_date/1000, '%Y-%m-%d %H:%i:%s')
 end

正确写法:

sql 复制代码
case
	when t1.invalid_end_date is null then ''
	else FROM_UNIXTIME(t1.invalid_end_date/1000, '%Y-%m-%d %H:%i:%s')
	end as invalidEndTime

总结:

简单 CASE 形式:CASE column WHEN value THEN...

搜索 CASE 形式:CASE WHEN condition THEN...

第二种写法不会报错是因为它正确使用了简单 CASE 形式:

t1.is_enable 是列名

1, 0, 2 是具体的值

这种形式用于直接比较列的值

第二种写法 is null 是一个条件判断,但却使用了简单 CASE 的形式,导致语法错误。

总结:

当需要比较列值是否等于某个特定值时,使用: CASE 列名 WHEN 值 THEN...

当需要判断条件(如 IS NULL,>,<,LIKE 等)时,必须使用: CASE WHEN 条件 THEN...

相关推荐
城管不管8 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
倔强的石头1068 小时前
向量数据库从相似度检索走向融合数据底座
数据库
今天AI了吗9 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
Csvn10 小时前
📊 SQL 入门 Day 22:视图与物化视图
后端·sql
lilian23310 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更10 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
保卫大狮兄11 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察12 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
小席是个热心肠12 小时前
Redis的自我学习
数据库·redis·学习
2601_9657984713 小时前
Salient Theme Setup Guide for Fast Creative WordPress Sites
数据库·web3·php·wordpress