回答
NULL必須按以下方式處理,
等於null:
Column IS NULL
不等於空:
Column IS NOT NULL
或者:
ISNULL(Column,-1) = -1
ISNULL(Column,-1) <> -1
如果值爲NULL,則將coulmn值設置爲-1,然後如果列的真實值爲-1,則與-1比較將創建不可預測的行爲。 該答案的第一部分是正確的,但不推薦第二部分。 –
是的,如果確實存在-1值,我不會使用它。它完全是一個如何用NON NULL來處理NULLS的例子 –
在數據庫中處理數據的一件事告訴我,應該永遠不要依賴數據來滿足您的期望。預計它是完全錯誤的,並且根據涵蓋每種可能性的標準進行防禦性編碼,並且最終結果將是基於應用程序中先前代碼中的錯誤所產生的錯誤數據而不易出現錯誤和行爲的更健壯的解決方案。 –
NULL是未知的標記,它不是一個值 - 意味着它可以是任何值,包括1,因此您的查詢返回0記錄。以下查詢將返回記錄。
select 21 where 1 is not null
您應該考慮ANSI_NULLs,根據設置的方式您將得到不同的結果。
當ANSI_NULLS設置爲ON
SET ANSI_NULLS ON
GO
IF (NULL=NULL)
PRINT 'EQUAL'
ELSE
PRINT 'NOT EQUAL'
GO
結果:不等於
當ANSI_NULLS設置爲OFF(NULL = NULL(;)
SET ANSI_NULLS OFF
GO
IF (NULL=NULL)
PRINT 'EQUAL'
ELSE
PRINT 'NOT EQUAL'
GO
結果:EQUAL
- 1. 比較INT /長恆爲零
- 2. 比較int值
- 3. 與int類比較
- 4. 與空值比較日期
- 5. 如何比較零整數與值
- 6. 比較int值和2值
- 7. 如何比較CombinedResponse對象值與int?
- 8. 比較比較Int
- 9. select查詢,比較空記錄
- 10. 比較int和返回1
- 11. 正確比較IntPtr與int
- 12. 將int與NaN比較
- 13. 將int與List SML比較
- 14. 如何比較int與char?
- 15. 比較INT與爲size_t
- 16. 在java中比較int值?
- 17. 比較Android中的int值
- 18. 如何比較int值?
- 19. 如何比較軌道活動記錄查詢中的空值
- 20. 以零列值返回記錄
- 21. 返回訪問記錄與零,而不是空
- 22. SpEL - 空值比較
- 23. 在SQL比較中比較空值
- 24. LinQ在分組記錄與零值
- 25. 將當前記錄與前一記錄進行比較
- 26. 將頂部記錄與頂部記錄進行比較-1
- 27. 與空的數值數據比較C#
- 28. 將整數與空值進行比較
- 29. FxCop規則不與空值比較
- 30. 比較1 INT
你的意思是'選擇21,其中1不爲空' –
爲了使這個聲音儘可能禪。 n不會將值與未知值進行比較。 – Zane
要展開,「NULL」是一個不是值的狀態。如果你不知道某人的姓名,當你被問到他們應該在哪裏按字母順序排列時,你會說什麼? – JNK