SQL server中的NULL值
1、OR、AND、NOT真值表
A | B | A OR B | A AND B | NOT A |
FALSE | FALSE | FALSE | FALSE | TRUE |
FALSE | TRUE | TRUE | FALSE | - |
FALSE | NULL | NULL | FALSE | - |
TRUE | FALSE | TRUE | FALSE | FALSE |
TRUE | TRUE | TRUE | TRUE | - |
TRUE | NULL | TRUE | NULL | - |
NULL | FALSE | NULL | FALSE | NULL |
NULL | TRUE | TRUE | NULL | - |
NULL | NULL | NULL | NULL | - |
因為NULL當UNKNOWN來理解,因此,當值為NULL時,它既有可能是FALSE也有可能是TRUE。如果計算結果只有一種可能,則取該種可能;如果計算結果既有可能是FALSE,也有可能是TRUE,那麼結果便為NULL。例如,NOT NULL,其結果也有兩種可能,因此NOT NULL的結果是NULL。再例如,NULL AND TRUE,則其結果也有兩種可能,因此NULL AND TRUE的結果是NULL。但是,NULL OR TRUE,或是NULL AND FALSE,前者結果為TRUE,單是一個TRUE出現,便足以知道結果為TRUE;後者結果為FALSE,單是一個FALSE出現,便足以知道結果為FALSE。這是OR和AND的特性決定的。
2、比較運算子及算術運算子中的NULL
比較運算子及算術運算子中的NULL,會導致運算結果也為NULL。如3+NULL的結果為NULL,NULL>=5的結果為NULL,等等。
3、BETWEEN AND、IN中的NULL
A BETWEEN B AND C意為A>=B AND A<=C,因此其產生NULL值的情況,可以參照後者判斷。A NOT BETWEEN B AND C相應等價於NOT(A>=B AND A<=C)。
A IN(B,C,D)意為A=B OR A=C OR A=D,因此其產生NULL值的情況,可以參照後者判斷。A NOT IN(B,C,D)相應等價於NOT(A=B OR A=C OR A=D)。當集合為空時,IN的結果為FALSE,NOT IN的結果則為TRUE。
4、EXISTS、IS NULL
EXISTS(以及NOT EXISTS)、IS NULL(以及IS NOT NULL),均只產生FALSE或TRUE,而不產生NULL。
5、ANY、ALL
在一個值與一個集合(一組值)比較時,比較運算子可以加上ANY(或SOME,作用相同)或ALL。
A>ANY(B,C,D)意為A>B OR A>C OR A>D,因此其產生NULL值的情況,可以參照後者判斷。當集合為空時,ANY的結果為FALSE。
A>ALL(B,C,D)意為A>B AND A>C AND A>D,因此其產生NULL值的情況,可以參照後者判斷。當集合為空時,ALL的結果為TRUE。
6、WHERE、HAVING、ON條件篩選,與完整性約束檢查
在WHERE、HAVING、ON條件篩選中,只保留結果為TRUE的,而不處理FALSE及NULL的。但在完整性約束檢查中,只有結果為FALSE的,才違反約束檢查,NULL並不違反。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-557809/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中的空值NULLSQLNull
- SQL 查詢中的 NULL 值SQLNull
- hive中的null值HiveNull
- sql server 資料庫中null 轉換為 0SQLServer資料庫Null
- 去除陣列中的 null 值陣列Null
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- 警惕SQL中間的NULLSQLNull
- sql server中對日期欄位值的比較SQLServer
- 【SQL】17 SQL 檢視(Views)、SQL Date 函式、SQL NULL 值、SQLView函式Null
- mysql中null與“空值”的坑MySqlNull
- 深入詳解SQL中的NullSQLNull
- sql中的安全問題nullSQLNull
- 確定幾個SQL Server欄中的最大值SQLServer
- SQL中的Null深入研究分析SQLNull
- SQL中關於NULL的程式碼SQLNull
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- SQL Story摘錄(七)————觸控NULL值 (轉)SQLNull
- SQL Server中,WITH AS的使用SQLServer
- 【NULL】Oracle null值介紹NullOracle
- 如何在es中查詢null值Null
- not in 中包含null值是個悲劇Null
- SQL SERVER檢視列的預設值SQLServer
- 【NULLS】Oracle對SQL排序後NULL值位置的“特殊關照”NullOracleSQL排序
- SQL NULLSQLNull
- SQL Server中@@ROWCOUNT的用法SQLServer
- SQL Server中distinct的用法SQLServer
- SQL Server中tempdb的管理SQLServer
- 你真的理解T-sql中的NULL嗎?SQLNull
- SQL SERVER中SQL優化SQLServer優化
- Excel資料匯入Sql Server,部分數字為NullExcelSQLServerNull
- SQL SERVER 儲存過程 獲取三個數中的最大值SQLServer儲存過程
- SQL Server 中調整自增欄位的當前初始值zzSQLServer
- SQL Server 計數器 閥值列表SQLServer
- SQL Server 函式返回多個值SQLServer函式
- [zt] 使用SQL Server中的Linked Server及Remote ServerSQLServerREM
- NULL 值與索引Null索引
- SQL SERVER中的頁和區SQLServer
- SQL Server 中的稀疏列支援SQLServer