2017-08-02 31 views

回答

0
  1. 假人DUAL是一個VARCHAR2,你選擇從DUAL是不是空(IS NOT NULL)所有假人。 DUAL有一行DUMMY ='X'。
  2. 現在你說,假人是不是在一組空的,這是沒有意義的真正和選擇將返回任何結果。

NULL是一個特殊字符,而不是零。它表示沒有真實的數據(包含零和空白的數據)。

1

在Oracle二進制表達式可以計算爲三種狀態:TRUEFALSENULL其中NULL可以被認爲是相同的,爲未定義或未知的值。應用二元運算到NULL值會給出一個NULL輸出(而不是如你所料,TRUEFALSE):

​​

查詢:

SELECT DUMMY FROM DUAL WHERE DUMMY NOT IN (NULL) 

是等價的:

SELECT DUMMY FROM DUAL WHERE NOT(DUMMY = NULL) 

而且WHERE子句的值爲NOT(DUMMY = NULL)NOT NULL哪些依次評估爲NULL。由於WHERE濾波器的計算結果爲一個非TRUE值的行被排除。

IS NULL操作專爲測試值是否是NULL,並會做你想要什麼在平等=運營商或運營商IN不會。

所以:

Boolean Operation Result 
----------------- ------ 
NULL = NULL  NULL 
NULL IN (NULL) NULL 
NULL IS NULL  TRUE