QlikWorld 2020 Global Conference. Join us to discover how to get the most from your data. Act fast. Register now and save.

NULL 值處理

由於資料庫查詢及/或表格之間的聯結,未能為某欄位產生資料時,結果通常是 NULL 值。

概述

Qlik Sense 邏輯會將下列結果視為真實的 NULL 值:

  • ODBC 連線傳回的 NULL

  • 由於資料載入指令碼中表格強制串連所建立的 NULL

  • 由於資料載入指令碼中的聯結而建立的 NULL

  • 由於產生要顯示在表格中之欄位值組合所建立的 NULL 值。

備註: 一般無法將這些 NULL 值用於關聯及選項,不過採用 NullAsValue 陳述式時則可使用。

如需關於 NullAsValue 的詳細資訊,請參閱 NullAsValue

就定義而言,文字檔不可包含 NULL 值。

ODBC建立關聯/選取 NULL

可以從 ODBC 資料來源建立關聯和/或選取 NULL 值。為此已定義了指令碼變數。可使用下列語法:

SET NULLDISPLAY=<sym>;

符號 <sym> 將在資料輸入的最低層級,替代來自 ODBC 資料來源的所有 NULL 值。<sym> 可以是任何字串。

若要將此功能重設為預設解譯,請使用下列語法:

SET NULLDISPLAY=;

備註: 使用 NULLDISPLAY 只會影響來自 ODBC 資料來源的資料!

如果您要 Qlik Sense 邏輯將 ODBC 連線傳回的 NULL 值解譯為空字串,請將下列一行新增到任何 SELECT 陳述式之前的指令碼。

SET NULLDISPLAY=";

備註: 這裡的「''」實際上是兩個單引號,中間沒有任何項目。

如需關於 NullDisplay 的詳細資訊,請參閱 NullDisplay

從文字檔建立 NULL

可定義符號,當在文字檔或 inline 子句出現該符號時,就會將其解譯為真實的 NULL 值。請使用下列陳述式:

SET NULLINTERPRET=<sym>;

<sym> 符號會解譯為 NULL<sym> 可以是任何字串。

若要將此功能重設為預設解譯,請使用:

SET NULLINTERPRET=;

備註: 使用 NULLINTERPRET 只會影響文字檔及 inline 子句中的資料。

如需關於 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)