2010-04-30 90 views
0

我之前在這個論壇上提過這個問題,他們告訴我它會返回一個空的結果集。我想知道如果我用空值設置列,它是否也會返回一個空的結果集? (注:ANSI_NULLS爲OFF)「= null」並選擇語句!

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/

回答

5

總是返回一個空的結果集,因爲什麼都不能等於NULL。 NULL被認爲是「未知」,所以即使你做了SELECT 'A' FROM T WHERE NULL = NULL;它也會返回一個空集。如果要檢查列是否爲空,請執行以下操作:

SELECT 'A' FROM T WHERE A IS NULL; 
+1

@ user329820查看您的其他問題,http://stackoverflow.com/questions/2745849/mysql-column-names-and-aliases – 2010-04-30 17:57:43

2

您需要IS NULLNULL = NULL在SQL中計算結果爲false