# NULL 值處理

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



## 概述

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

* 從 ODBC 連線傳回的 NULL 值。

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

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

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

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

如需關於 NullAsValue 的詳細資訊，請參閱 [NullAsValue](https://help.qlik.com/zh-TW/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/NullAsValue.htm)。

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

## 從 ODBC 建立關聯/選取 NULL 值

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/null-value-handling.htm)SET NULLDISPLAY=&lt;sym&gt;;

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

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

SET NULLDISPLAY=;

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

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

SET NULLDISPLAY=";

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

如需關於 NullDisplay 的詳細資訊，請參閱 [NullDisplay](https://help.qlik.com/zh-TW/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/NullDisplay.htm)。

## 從文字檔建立 NULL 值

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/null-value-handling.htm)SET NULLINTERPRET=&lt;sym&gt;;

&lt;sym&gt; 符號會解譯為 NULL。&lt;sym&gt; 可以是任何字串。

若要將此功能重設為預設解譯，請使用：

SET NULLINTERPRET=;

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

如需關於 NullInterpret 的詳細資訊，請參閱 [NullInterpret](https://help.qlik.com/zh-TW/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/NullInterpret.htm)。

## 在運算式中傳播 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 &lt;&gt; NULL | 傳回 True (-1) |
| A &lt; NULL | 傳回 False (0) |
| A &lt;= NULL | 傳回 False (0) |
| A = NULL | 傳回 False (0) |
| A &gt;= NULL | 傳回 False (0) |
| A &gt; NULL | 傳回 False (0) |