You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中使用CASE语句映射NULL值的问题求助

解决CASE语句匹配NULL值的问题

问题原因

你使用的是简单CASE表达式(CASE ID WHEN ...),这种写法会将ID与每个WHEN后的值做相等比较。但SQL中NULL = NULL的结果是UNKNOWN,永远不会匹配成功,所以ID为NULL时会直接进入ELSE分支返回OTHER STATE。

解决方案

改用搜索CASE表达式,直接在WHEN后编写布尔判断条件,用ID IS NULL来匹配NULL值,这是SQL中判断NULL的标准写法,能正确触发对应分支:

SELECT ID,
       CASE
           WHEN ID = 'TR' THEN 'TRIPURA'
           WHEN ID = 'MN' THEN 'MANIPUR'
           WHEN ID = 'AS' THEN 'ASSAM'
           WHEN ID = 'NL' THEN 'NAGALAND'
           WHEN ID = 'AN' THEN 'ARUNACHAL'
           WHEN ID IS NULL THEN 'NO STATE'
           ELSE 'OTHER STATE'
       END AS STATE
FROM GEOGRAPHY;

这种写法每个分支独立判断条件,WHEN ID IS NULL会精准匹配ID为NULL的记录,返回NO STATE,其他非匹配值则进入ELSE分支。

内容的提问来源于stack exchange,提问作者ANUD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:03:28