這可能是在其他數據庫的情況很好,但如果你讓下面的查詢爲什麼覈對現有數據不包括在SQL Server NULL 2008
SELECT * FROM MyTbl WHERE MyColumn != 'Foo'
又在哪裏MyColumn是,比如說任何記錄,「 Bar'被提取,但不是MyColumn爲NULL的地方。我認爲這是預期的行爲,這背後有一個原因,我想知道爲什麼。
IS NULL被認爲是等於「富」,或者它只是沒有預計的條件的一部分,因爲條件(NULL!=「富」)似乎是真實的。
這可能是在其他數據庫的情況很好,但如果你讓下面的查詢爲什麼覈對現有數據不包括在SQL Server NULL 2008
SELECT * FROM MyTbl WHERE MyColumn != 'Foo'
又在哪裏MyColumn是,比如說任何記錄,「 Bar'被提取,但不是MyColumn爲NULL的地方。我認爲這是預期的行爲,這背後有一個原因,我想知道爲什麼。
IS NULL被認爲是等於「富」,或者它只是沒有預計的條件的一部分,因爲條件(NULL!=「富」)似乎是真實的。
在SQL Server的工作原理三態,這意味着NULL = NULL UNKNOWN which treats as FALSE
在所有的關係型數據庫,空值不等於任何東西,包括自己。
您將無法找到與MyColumn空值,即使你的查詢是"select * from MyTbl where MyColumn = null"
行。只有這樣,才能讓他們將"select * from MyTble where MyColumn is null"
有關詳細說明,請參閱http://en.wikipedia.org/wiki/Null_(SQL)
是的,蒂姆評論,NULL值是未知的。 SQL Server不會爲了匹配而假設NULL值。 You can check out more info about how SQL Server processes NULLs.
'NULL'裝置_undefined_。與某些非特定的比較必須返回_unequal_。 –
http://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/ – Bort
非常相似的問題:http://stackoverflow.com /問題/ 1843451 /爲什麼 - 不空無效評估到假的-SQL服務器?RQ = 1 – msmucker0527