我之前在这个论坛上问过这个问题,他们告诉我它会返回一个空的结果集。我想知道如果我将列设置为空值,它还会返回一个空结果集吗? (注意:ANSI_NULLS为OFF)
SELECT 'A' FROM T WHERE A = NULL;
这也是一个让我感到困惑的例子:
DECLARE @val CHAR(4)
SET @val = NULL
SET ANSI_NULLS ON
If @val =NULL
PRINT ‘TRUE’
ELSE
PRINT ‘FALSE’
SET ANSI_NULLS OFF
If @val =NULL
PRINT ‘TRUE’
ELSE
PRINT ‘FALSE’
我在此示例中找到的网站是:http://www.sqlservercentral.com/articles/T-SQL/understandingthedifferencebetweenisnull/871/
答案 0 :(得分:5)
它将始终返回一个空结果集,因为没有任何东西可以等于NULL。 NULL被认为是“未知”,所以即使你做SELECT 'A' FROM T WHERE NULL = NULL;
它也会返回一个空集。如果要检查列是否为空,请执行:
SELECT 'A' FROM T WHERE A IS NULL;
答案 1 :(得分:2)
您需要IS NULL
。 NULL = NULL
在SQL