【NULL】Oracle null值介紹
如果一行中的一個列沒有值,那麼這個列就被稱為空,或者說包含空。空值可以出現在任何資料型別的列中,
並且不受NOT NULL或PRIMARY KEY完整性約束的限制。當實際值不為人知或者一個值沒有意義的時候,可以使用null。
Oracle資料庫將一個長度為0的字元值視為null。然而,不要使用null來表示一個數值為0的數值,因為它們並不等同。
一個評估為UNKNOWN的條件的作用幾乎與FALSE相同。
例如,一個在WHERE子句中帶有條件的SELECT語句,如果評估為UNKNOWN,則不返回任何記錄。
然而,評價為UNKNOWN的條件與FALSE的不同之處在於,對UNKNOWN條件評價的進一步操作將評價為UNKNOWN。
因此,NOT FALSE評估為TRUE,但是NOT UNKNOWN評估為UNKNOWN。
表3-20顯示了涉及條件中空值的各種評估的例子。
如果在SELECT語句的WHERE子句中使用了評價為UNKNOWN的條件,那麼這個查詢就不會有記錄被返回。
示例:
-- in null, 透過檢視執行計劃,發下 他們是or,null值忽略 SQL> select * from t2 where id in (1,2,null); ID NAME ---------- ------------------------------ 1 aaa 2 ccc Execution Plan ---------------------------------------------------------- Plan hash value: 1513984157 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 14 | 3 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T2 | 2 | 14 | 3 (0)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("ID"=1 OR "ID"=2) --改為not in測試,發現 關聯是and, and後只要有一個false,則整個是false,所以,無結果 SQL> select * from t2 where id not in (1,2,null); no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 1513984157 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 7 | 3 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T2 | 1 | 7 | 3 (0)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("ID"<>TO_NUMBER(NULL) AND "ID"<>1 AND "ID"<>2)
參考:
連結自動遮蔽,參考Oracle官方書籍 Oracle sql language Reference 中部分章節,如null、not in/in 等,如下圖所示:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2878956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL null值儲存,null效能影響MySqlNull
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- SQL 查詢中的 NULL 值SQLNull
- 去除陣列中的 null 值陣列Null
- 替換NULL值幫助文件Null
- FastJson 序列化處理 null 值ASTJSONNull
- mysql中null與“空值”的坑MySqlNull
- 如何在es中查詢null值Null
- PostgreSQL排序把null值排在後面SQL排序Null
- 資料庫系統 空值 null資料庫Null
- MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!MySqlNull索引
- PropertyChanged == nullNull
- MySQL NULLMySqlNull
- [20231024]NULL值在索引的情況.txtNull索引
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- NULL列時,如何使得IS NULL或者IS NOT NULL可以使用索引來提高查詢效率Null索引
- 為什麼索引無法使用is null和is not null索引Null
- MYSQL timestamp NOT NULL插入NULL的報錯問題MySqlNull
- 【C#】-對於Null值的處理方法C#Null
- MySQL 的 NULL 值是怎麼儲存的?MySqlNull
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- [20200326]繫結變數抓取與NULL值.txt變數Null
- NOT IN之後的子查詢不能包含NULL值Null
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- null 和 undefinedNullUndefined
- null與indexNullIndex
- Mybatis出現成員賦值都是null或者預設值MyBatis賦值Null
- 檢視oracle資料庫中,哪些表的欄位是null值比較多Oracle資料庫Null
- MySQL null值欄位是否使用索引的總結MySqlNull索引
- 今天測試了一下mysql的Null值MySqlNull
- TreeSet的null值與元素型別的約束Null型別
- MySQL null和''分析MySqlNull
- undefined與null與?. ??UndefinedNull
- null in ABAP and nullpointer in JavaNullJava
- SCSS Null 型別CSSNull型別
- MySQL NOT NULL列用 WHERE IS NULL 也能查到資料的原因MySqlNull
- dart系列之:和null說再見,null使用最佳實踐DartNull
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null