我最近读了一个让我困惑的SQL代码片段。SQL Server是否将空值作为空字符串?
declare @test nvarchar(100) = NULL
select
case
when @test <> '' then 1
else 0
end
我相当有信心,其结果将是1
,因为我觉得NULL
并不等同于空字符串。但是,实际输出是0
。
(我使用的MS SQL Server 2012在Windows 7 64位)
据我明白,''
是指示值包含0字符空字符串,和Null
意味着数据是在缺席。但现在我不确定这一点。任何人都可以帮我整理一下吗?这是一些免除案件吗?
阅读[this](http://www.w3schools.com/sql/sql_null_values.asp)。 Immagine你正在邀请派对。 ''''就像获得rsvp一样没有任何关系。 'null'完全没有任何回报。 – JohnHC
该比较的结果是“未确定”,不是真或假 – Lamak
如果在比较的任一侧都有NULL,则结果不是真或假,则结果为NULL。这意味着在你的比较中,结果没有评估为真,它评估为NULL,其落入else。 –