【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
- NULL 值與索引Null索引
- ((NULL) null).printNULL();((NULL) null).printnull();Null
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- ORACLE -> NULL & INDEXESOracleNullIndex
- NULL 值與索引(二)Null索引
- hive中的null值HiveNull
- null(空值)小結Null
- hive NULL值影響HiveNull
- case when遇上null值Null
- 不再迷惑,無值和 NULL 值Null
- Oracle 排序中常用的NULL值處理方法Oracle排序Null
- IS NULL和IS NOT NULLNull
- 關於 oracle NULLOracleNull
- 大話Oracle nullOracleNull
- oracle中的nullOracleNull
- SQL中的空值NULLSQLNull
- SQL server中的NULL值SQLServerNull
- not null與check is not nullNull
- 了不起的 “filter(NULL IS NOT NULL)”FilterNull
- SQL 查詢中的 NULL 值SQLNull
- 去除陣列中的 null 值陣列Null
- 替換NULL值幫助文件Null
- 查詢中空值null的查理Null
- Oracle中的NULL(六)OracleNull
- Oracle中的NULL(五)OracleNull
- Oracle中的NULL(八)OracleNull
- MySQL中is not null和!=null和<>null的區別MySqlNull
- 關於ORACLE MYSQL NOT IN和NOT exists需要注意的 NULL值OracleMySqlNull
- apply()第一個引數是null簡單介紹APPNull
- mysql探究之null與not nullMySqlNull
- Difference between 2>&-, 2>/dev/null, |&, &>/dev/null, >/dev/null, 2>&1devNull
- 資料庫系統 空值 null資料庫Null
- PostgreSQL排序把null值排在後面SQL排序Null
- mysql中null與“空值”的坑MySqlNull
- 如何在es中查詢null值Null
- not in 中包含null值是個悲劇Null
- MySQL裡null與空值的辨析MySqlNull