NULL 值處理
由於資料庫查詢及/或表格之間的聯結,未能為某欄位產生資料時,結果通常是 NULL 值。
概述
Qlik Sense 邏輯會將下列結果視為真實的 NULL 值:
-
從 ODBC 連線傳回的 NULL 值
-
由於資料載入指令碼中表格強制串連所建立的 NULL 值
-
由於資料載入指令碼中的聯結而建立的 NULL 值
-
由於產生要顯示在表格中之欄位值組合所建立的 NULL 值。
如需關於 NullAsValue 的詳細資訊,請參閱 NullAsValue。
就定義而言,文字檔不可包含 NULL 值。
從 ODBC 建立關聯/選取 NULL 值
可以從 ODBC 資料來源建立關聯和/或選取 NULL 值。為此已定義了指令碼變數。可使用下列語法:
符號 <sym> 將在資料輸入的最低層級,替代來自 ODBC 資料來源的所有 NULL 值。<sym> 可以是任何字串。
若要將此功能重設為預設解譯,請使用下列語法:
SET NULLDISPLAY=;
如果您要 Qlik Sense 邏輯將 ODBC 連線傳回的 NULL 值解譯為空字串,請將下列一行新增到任何 SELECT 陳述式之前的指令碼。
SET NULLDISPLAY=";
如需關於 NullDisplay 的詳細資訊,請參閱 NullDisplay 。
從文字檔建立 NULL 值
可定義符號,當在文字檔或 inline 子句出現該符號時,就會將其解譯為真實的 NULL 值。請使用下列陳述式:
<sym> 符號會解譯為 NULL。<sym> 可以是任何字串。
若要將此功能重設為預設解譯,請使用:
SET NULLINTERPRET=;
如需關於 NullInterpret 的詳細資訊,請參閱 NullInterpret 。
在運算式中傳播 NULL 值
NULL 值會根據幾個邏輯與相當合理的規則透過運算式來傳播。
函數
一般的規則是當參數落在函數所定義的範圍之外時,函數會傳回 NULL。
運算式 | 結果 |
---|---|
asin(2) | 傳回 NULL |
log(-5) | 傳回 NULL |
round(A,0) | 傳回 NULL |
從以上結果可推知,當評估所需的任何參數為 NULL 時,函數通常會傳回 NULL。
運算式 | 結果 |
---|---|
sin(NULL) | 傳回 NULL |
chr(NULL) | 傳回 NULL |
if(NULL, A, B) | 傳回 B |
if(True, NULL, A) | 傳回 NULL |
if(True, A, NULL) | 傳回 A |
第二個規則的例外情況是測試類型的邏輯函數。
運算式 | 結果 |
---|---|
isnull(NULL) | 傳回 True (-1) |
isnum(NULL) | 傳回 False (0) |
算術與字串運算子
如果在這些運算子的任一端出現 NULL,則會傳回 NULL。
運算式 | 結果 |
---|---|
A + NULL | 傳回 NULL |
A - NULL | 傳回 NULL |
A / NULL | 傳回 NULL |
A * NULL | 傳回 NULL |
NULL / A | 傳回 NULL |
0 / NULL | 傳回 NULL |
0 * NULL | 傳回 NULL |
A & NULL | 傳回 A |
關聯運算子
如果在關係運算子的任一端出現 NULL,則適用特殊規則。
運算式 | 結果 |
---|---|
NULL (任何關係運算子) NULL | 傳回 NULL |
A <> NULL | 傳回 True (-1) |
A < NULL | 傳回 False (0) |
A <= NULL | 傳回 False (0) |
A = NULL | 傳回 False (0) |
A >= NULL | 傳回 False (0) |
A > NULL | 傳回 False (0) |