SQL IF NULL来自SELECT语句

时间:2014-07-17 09:30:43

标签: sql sql-server sql-server-2008 tsql

为什么这给了我一个我所期待的:

IF (SELECT 123) = 123
    PRINT 1
ELSE
    PRINT 2

但是这给了我2个我没想到的:

IF (SELECT NULL) = NULL
    PRINT 1
ELSE
    PRINT 2

4 个答案:

答案 0 :(得分:3)

NULL值由IS NULL

检查

你必须使用:

IF (SELECT NULL) IS NULL
    PRINT 1
ELSE
    PRINT 2

来自manual

  

要搜索NULL值的列值,不能使用expr =   NULL测试。以下语句不返回任何行,因为expr =   对于任何表达式

,NULL永远不会成立

答案 1 :(得分:3)

如果您关闭NULLS

SET ANSI_NULLS OFF
    IF (SELECT NULL) =  NULL
        PRINT 1
    ELSE
        PRINT 2

然后你会得到PRINT 1

答案 2 :(得分:1)

您无法使用NULL检查=。因为必须使用IS。 例如:

IF (SELECT NULL) IS NULL
    PRINT 1
ELSE
    PRINT 2

答案 3 :(得分:1)

您无法使用NULL检查=。您需要使用IS NULL,如下所示

IF (SELECT NULL) IS NULL
    PRINT 1
ELSE
    PRINT 2