2016-12-01 63 views
3

我主要有應用程序開發背景。在編程語言variable == nullvariable != null的作品。爲什麼SQL語言使用IS NULL或IS NOT NULL而不是= NULL或<> NULL?

說到SQL,下面的查詢不會給出任何語法錯誤,但也不會返回正確的結果。

select SomeColumn from SomeTable where SomeNullableColumn=null 
select SomeColumn from SomeTable where SomeNullableColumn<>null 

爲什麼我們需要編寫與is nullis not null查詢得到正確的結果?

select SomeColumn from SomeTable where SomeNullableColumn is null 
select SomeColumn from SomeTable where SomeNullableColumn is not null 

背後有什麼is nullis not null代替=null<>null原因/要求?

這是ANSI SQL還是Microsoft的TSQL標準?

+3

由於'NULL'不是一個值,這意味着沒有價值。你無法比較任何東西。 –

+0

可能重複[爲什麼是null不等於null false](http://stackoverflow.com/questions/1833949/why-is-null-not-equal-to-null-false) – EoinS

+2

yup重複的http:///stackoverflow.com/questions/9581745/sql-is-null-and-null –

回答

2

因爲null不等於null,像NaN(「非數字」的情況下,例如,將0除以0或升高至0功率生產)不等於NaN。考慮將null作爲未知值(未知值不一定等於某個未知值)。

1

因爲sql基於集合論和謂詞邏輯。這兩個強大的數學基礎包含數學邏輯 - Boolean algebra。在這個邏輯中存在三個值 - TRUE, FALSE and UNKNOWN (=NULL)。用於代替= null來分離邏輯。爲什麼它是ANSI標準?這是爲了使它更易於閱讀和分離三值邏輯。

在通常的數據庫中,用null替換爲'使得qry更簡單。

或嘗試SET ANSI_NULLS OFF選項。