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...

相关推荐
张璐月2 小时前
mysql join语句、全表扫描 执行优化与访问冷数据对内存命中率的影响
数据库·mysql
全干engineer4 小时前
ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
数据库·clickhouse
Hellyc6 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
lifallen6 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
{⌐■_■}10 小时前
【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
数据库·分布式·mysql·kafka·go
isNotNullX10 小时前
数据中台架构解析:湖仓一体的实战设计
java·大数据·数据库·架构·spark
睿思达DBA_WGX13 小时前
由 DB_FILES 参数导致的 dg 服务器无法同步问题
运维·数据库·oracle
袋鼠云数栈14 小时前
使用自然语言体验对话式MySQL数据库运维
大数据·运维·数据库·后端·mysql·ai·数据治理·数栈·data+ai
渣渣盟14 小时前
掌握MySQL函数:高效数据处理指南
sql·mysql·adb·dba