我为什么不在这里?

时间:2014-12-29 20:40:09

标签: sql-server null

我得到的不是空的'然后是' null':

DECLARE @X Int

SELECT CASE @X
    WHEN NULL THEN 'NULL'
    ELSE 'NOT NULL'
    END

SELECT 'NULL'
WHERE @X IS NULL

2 个答案:

答案 0 :(得分:4)

因为NULL <> NULL

case statement中,您比较NULL = NULL失败,因此NOT NULL被选中。

尝试像这样更改你Case statement

SELECT CASE 
         WHEN @X IS NULL THEN 'NULL'
         ELSE 'NOT NULL'
       END

答案 1 :(得分:0)

使用

SET ANSI_NULLS OFF
在查询之前

。默认情况下,SQL Server不支持将表达式等同于null

默认情况下它附带

SET ANSI_NULLS ON

当ANSI_NULLS打开时,你不能使用NULL = NULL而是检查&#34; IS NULL&#34;必须使用