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

相关推荐
csdn_aspnet28 分钟前
mysql 使用逗号拼接一列数据
数据库·mysql·group_concat
Csvn42 分钟前
📊 SQL 入门 Day 1:SELECT & WHERE — 数据查询的基本功
后端·sql
大师兄66681 小时前
HarmonyOS7 数据持久化 relationalStore:数据库实战
数据库·arkui·实战案例·harmonyos7
TDengine (老段)1 小时前
TDengine SMA 索引 — 块级/文件级统计索引
android·大数据·服务器·数据库·人工智能·时序数据库·tdengine
冰茶丿1 小时前
状态机在嵌入式系统中的应用:不只是switch-case这么简单
数据库·嵌入式硬件·mongodb
AIHR数智引擎1 小时前
15%对撞40%:WEF白皮书里的AI组织隐忧
数据库·人工智能·经验分享·职场和发展·aihr
卓怡学长1 小时前
w261springboot基于web学校课程管理系统
java·数据库·spring boot·spring·intellij-idea
嘉泰姆半导体官方1 小时前
CXAR41337C 双通道数字音频功放 | 2×20W | EQ+DRC | I²S | MCLK-Less - 嘉泰姆电子
前端·javascript·数据库
不坑老师2 小时前
怎么在Word中制作汉字书写笔顺——不坑盒子汉字笔顺步骤在小学低段识字教学中的应用
前端·数据库·人工智能·word·excel·office
苍狼唤2 小时前
SQL+C# 增删改查(练习)
数据库·sql·c#