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

SQL Server中CASE WHEN语句NULL值匹配失效问题求解

SQL NULL值匹配查询修复方案

问题根因

原查询在@Cell参数为NULL时失效,核心是SQL标准中NULL无法通过=运算符完成等值匹配,NULL = NULL的运算结果为UNKNOWN而非TRUE,因此原WHERE条件永远无法命中Cell字段为NULL的行。

修复后的查询代码

仅修改WHERE子句中的CASE WHEN逻辑,同时支持NULL和非NULL值匹配:

DECLARE @Cell NVARCHAR(100) = '123' -- 赋值为NULL也可正常执行
SELECT * 
FROM Temp
WHERE 1 = CASE 
    WHEN @Cell IS NULL AND Cell IS NULL THEN 1
    WHEN @Cell IS NOT NULL AND Cell = @Cell THEN 1
    ELSE 0 
END

效果说明

  • 当@Cell赋值为非NULL值时,会返回所有Cell字段和参数值相等的行
  • 当@Cell赋值为NULL时,会返回所有Cell字段为NULL的行
  • 该CASE结构支持扩展叠加更多业务判断条件,适配复杂查询场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:57:01