婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL中IS NOT NULL與!=NULL的區別

SQL中IS NOT NULL與!=NULL的區別

熱門標簽:小程序智能電話機器人 ai電話電話機器人 泗洪正規電話機器人找哪家 簡單的智能語音電銷機器人 怎么申請400熱線電話 怎么去開發一個電銷機器人 河北便宜電銷機器人軟件 湖南保險智能外呼系統產品介紹 南昌呼叫中心外呼系統哪家好

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

默認情況下,推薦使用 IS NOT NULL去做條件判斷,因為SQL默認情況下對WHERE XX!= Null的判斷會永遠返回0行,卻不會提示語法錯誤。

這是為什么呢?

SQL Server文檔中對Null值的比較運算定義了兩種規則,如在SQL Server 2000中:

規則一是是ANSISQL(SQL-92)規定的Null值的比較取值結果都為False,既Null=Null取值也是False。另一種不準循ANSISQL標準,即Null=Null為True。:

例如數據表test結構:

復制代碼 代碼如下:

ROWNUM     DATA
-------------------
1     'Liu Yang'
2     Null
3     '12345'

按照ANSI SQL標準,下面的兩個查詢都不返回任何行:

查詢一: SELECT * FROM test WHERE data=NULL
查詢二: SELECT * FROM test WHERE data>NULL

而按照非ANSI SQL標準,查詢1將返回第二行,查詢2返回1、3行。

這是因為在SQL中,NULL是一種特有的數據類型,其等價于沒有任何值、是未知數。NULL與0、空字符串、空格都不同。
ANSI SQL標準中取得Null值的行需要用下面的查詢:

復制代碼 代碼如下:

SELECT * FROM test WHERE data IS NULL

由此可見非ANSI SQL標準中data=NULL等同于data IS NULL,data>NULL等同于data IS NOT NULL。

所以我們要牢記:默認情況下做比較條件時使用關鍵字“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在一個環境中修改規則,只能修改數據庫配置參數。

例如下面這種情況:你的應用程序使用ADODB來訪問數據庫,采用OleDb或者ODBC數據提供程序。對于查詢一: SELECT * FROM test WHERE data=NULL
我們可以直接發送命令取得查詢結果集,也可把它放到存儲過程當中。但二者查詢結果不同。若直接使用查詢命令,不返回任何行;而如果訪問存儲過程,返回第2行的數據。

最后,我們再次聲明:數據庫默認情況下,做SQL條件查詢比較時使用關鍵字“is null”和“is not null”。

標簽:江蘇 景德鎮 柳州 那曲 荊門 淮安 瀘州 威海

巨人網絡通訊聲明:本文標題《SQL中IS NOT NULL與!=NULL的區別》,本文關鍵詞  SQL,中,NOT,NULL,與,的,區別,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL中IS NOT NULL與!=NULL的區別》相關的同類信息!
  • 本頁收集關于SQL中IS NOT NULL與!=NULL的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 罗山县| 古交市| 大悟县| 隆尧县| 格尔木市| 安吉县| 三明市| 阜新市| 察哈| 榆树市| 舞阳县| 罗甸县| 沂水县| 隆尧县| 安阳县| 昌江| 松桃| 偏关县| 天台县| 铁力市| 广河县| 龙井市| 晋江市| 高碑店市| 镇沅| 赣榆县| 彭泽县| 股票| 大邑县| 青海省| 关岭| 麻城市| 玉田县| 遂川县| 灵宝市| 朝阳县| 金门县| 临猗县| 祁门县| 福建省| 康平县|