SQL中IS NOT NULL與 NULL的區別

2021-08-19 15:02:46 字數 1011 閱讀 4310

平時經常會遇到這兩種寫法:is not null與!=null。也經常會遇到資料庫有符合條件!=null的資料,但是返回為空集合。實際上,是由於對二者使用區別理解不透徹。

預設情況下,推薦使用 is not null去做條件判斷,因為sql預設情況下對where xx!= null的判斷會永遠返回0行,卻不會提示語法錯誤。

sql92標準中,!= null條件判斷永遠返回false,聚合運算永遠返回0.

所以我們要牢記:預設情況下做比較條件時使用關鍵字「is null」和「is not null」。

如果你一定要使用!= null來進行條件判斷,需要加上這個命令語句:set ansi_nulls off,這時資料庫進入ansi sql非標準模式,你會發現is not null 和 != null 是等效的了。

這裡使用的是模式切換命令set ansi_nulls[on/off]。on值採用ansi sql嚴格標準,off值採用非標準相容模式。另外set ansi_defaults [on/off]命令也可以實現標準的切換,只是這個命令控制的是一組符合sql-92標準的設定,其中就包括null值的標準。

預設情況下,資料庫管理程式(db-library)是set ansi_nulls為off的。但是我們的大多數應用程式,都是通過odbc或者oledb來訪問資料庫的,作為一種開放相容的資料庫訪問程式,或許是相容性的考慮,setansi_nulls值設定為on。這樣一來帶來的一些問題是需要注意的。像儲存過程或者自定義函式這樣的應用程式都是基於db-library的,預設情況下,setansi_nulls為off,並且在這樣的程式中,不能使用setansi_nulls在乙個環境中修改規則,只能修改資料庫配置引數。

但是set ansi_nulls off因為不是sql標準,不同的資料庫不一定支援這種語法。比如sql server中有這樣的說明:在 sql server 的未來版本中,ansi_nulls 將始終為 on,將該選項顯式設定為 off 的任何應用程式都將產生錯誤

資料庫預設情況下,做sql條件查詢比較時使用關鍵字「is null」和「is not null」。

SQL中IS NOT NULL與 NULL的區別

平時經常會遇到這兩種寫法 is not null與 null。也經常會遇到資料庫有符合條件 null的資料,但是返回為空集合。實際上,是由於對二者使用區別理解不透徹。預設情況下,推薦使用 is not null去做條件判斷,因為sql預設情況下對where xx!null的判斷會永遠返回0行,卻不會...

SQL中IS NOT NULL與 NULL的區別

平時經常會遇到這兩種寫法 is not null與 null。也經常會遇到資料庫有符合條件 null的資料,但是返回為空集合。實際上,是由於對二者使用區別理解不透徹。預設情況下,推薦使用 is not null去做條件判斷,因為sql預設情況下對where xx!null的判斷會永遠返回0行,卻不會...

SQL中N 的作用

sql中n 的作用 declare sql nvarchar 4000 set sql n select totalrecords count from n sqlfullpopulate n a exec sp executesql sql,n totalrecords int output to...