null无法按预期工作的情况

Ral*_*ton 15 t-sql sql-server sql-server-2008

考虑这个非常短的T-SQL代码,它使用案例对可空列进行测试

declare @t table(data varchar(10) null)
insert into @t values('something')
insert into @t values(null)

select data, 
    case data when null
        then 'missing'
        else 'not missing'
    end as test
from @t
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

data        test
---------   -----------
something   not missing
NULL        not missing
Run Code Online (Sandbox Code Playgroud)

然而,我所期待的是

data        test
---------   -----------
something   not missing
NULL        missing
Run Code Online (Sandbox Code Playgroud)

关于对这个可空值的测试,我错过了什么

M.R*_*.R. 41

你想要这样的东西:


select data,      
case when data is null         
then 'missing'         
else 'not missing'     
end as test from @t