# IsNull 指令碼與圖表函數

IsNull 函數會檢測運算式的值是否為 NULL，如果是的話，會傳回 -1 (True)，否則會傳回 0 (False)。

語法：

IsNull(expr )

資訊備註長度為 0 的字串不會視為 NULL，並將導致 IsNull 傳回 False。

傳回的資料類型： 布林值

引數

| 引數 | 描述 |
| --- | --- |
| expr | 包含待測量之資料的運算式或欄位。 |

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `IsNull(Productname)` | 如果 `ProductName` 為 Null 值，則傳回 `-1` (True)，否則傳回 `0` (False)。 |

## 範例 - IsNull 基礎事項

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/NULLFunctions/IsNull.htm)

#### 圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `ID`

  * `Value`

載入指令碼

```
Example:
LOAD * Inline
[ID, Value
0,
1,NULL
2,-
3,378];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `ID`

* `Value`

建立下列計算維度：

* `=If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value )`，如果 `Value` 欄位沒有值、破折號 (-) 字元或值 `NULL`，則傳回 `NULL`，否則傳回該值。

* `=If(IsNull(If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value )), 'T', 'F')`，用來根據 `Value` 欄位是否包含 Null 值，傳回值 `T` (True) 或 `F` (False)。

Results table

| ID | Value | If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value ) | If(IsNull(If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value )), 'T', 'F') |
| --- | --- | --- | --- |
| 0 |  | - | T |
| 1 | NULL | - | T |
| 2 | - | - | T |
| 3 | 378 | 378 | F |

`Value` 欄顯示資料集中輸入的資料。第一個量值 (第 3 欄) 對前 3 列傳回 `NULL`，前 3 列的值滿足 `IF` 陳述式的條件：`len(trim(Value))= 0 or Value='NULL' or Value='-'`。最後一列傳回輸入的值 `378`。

第二個量值 (第 4 欄) 採用第 3 欄中運算式的值，並傳回 `T` (如果是 `NULL`) 或 `F` (如果不是 `NULL`)。結果顯示，前 3 列都是 Null 值。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/NULLFunctions/IsNull.htm)

#### 載入指令碼

在此範例中，會載入含有四列的內嵌表格，其中前三行不包含任何內容，或是在 `Value` 欄中包含破折號 - 或文字 NULL。我們使用 Null 函數，將這些值轉換為具有中間前置 LOAD 的真正NULL 值表示法。

第一個前置 LOAD 新增一個欄位，使用 IsNull 函數檢查值是否為 NULL。

```
NullsDetectedAndConverted:
LOAD *,
If(IsNull(ValueNullConv), 'T', 'F') as IsItNull;

LOAD *,
If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value ) as ValueNullConv;

LOAD * Inline
[ID, Value
0,
1,NULL
2,-
3, 378];
```

以下是產生的表格。在 `ValueNullConv` 資料列中，`NULL` 值由 `-` 代表。

Results table

| ID | Value | ValueNullConv | IsItNull |
| --- | --- | --- | --- |
| 0 |  | - | T |
| 1 | NULL | - | T |
| 2 | - | - | T |
| 3 | 378 | 378 | F |

## 範例 - IsNull 使用情境

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/NULLFunctions/IsNull.htm)

#### 圖表運算式

概述

分析銷售資料集以查看哪些欄位具有 Null 值。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* `NULLINTERPRET` 變數設定為 `NULL`。

* 資料表格中的欄位如下：

  * `SalesID`

  * `Name`

  * `Age`

  * `Email`

  * `Region`

  * `Status`

載入指令碼

```
Set NULLINTERPRET = NULL;
Example:
LOAD * Inline [
SalesID, Name, Age, Email, Region, Status
1, John Smith, 30, john@email.com, North, Active
2, Jane Doe, NULL, jane@email.com, South, Active
3, Bob Johnson, 45, NULL, East, Inactive
4, Alice Brown, 28, alice@email.com, West, Active
5, Charlie Lee, NULL, charlie@email.com, NULL, Active
6, Eva Green, 35, eva@email.com, North, NULL
7, David White, 50, NULL, South, Inactive
8, Fiona Black, 42, fiona@email.com, East, Active
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `SalesID`

* `Name`

建立下列計算維度：

* `=If(IsNull(Age), 'Age unavailable', Age)`，如果是 `NULL`，則用值 `Age unavailable` 填入 `Age` 欄位。

* `=If(IsNull(Email), 'Email unavailable', Email)`，如果是 `NULL`，則用值 `Email unavailable` 填入 `Email` 欄位。

* `=If(IsNull(Region), 'Region unavailable', Region)`，如果是 `NULL`，則用值 `Region unavailable` 填入 `Region` 欄位。

Results table

| SalesID | Name | If(IsNull(Age), 'Age unavailable', Age | If(IsNull(Email), 'Email unavailable', Email) | If(IsNull(Region), 'Region unavailable', Region) |
| --- | --- | --- | --- | --- |
| 1 | John Smith | 30 | john@email.com | North |
| 2 | Jane Doe | Age unavailable | jane@email.com | South |
| 3 | Bob Johnson | 45 | Email unavailable | East |
| 4 | Alice Brown | 28 | alice@email.com | West |
| 5 | Charlie Lee | Age unavailable | charlie@email.com | Region unavailable |
| 6 | Eva Green | 35 | eva@email.com | North |
| 7 | David White | 50 | Email unavailable | South |
| 8 | Fiona Black | 42 | fiona@email.com | East |

`IsNull` 函數的結果是檢查是否為 Null 值，如果是則傳回 true，表示資料集中的多個欄位包含 Null 值。例如，在 `Charlie Lee` 的 `Age` 欄中識別了 Null 值，並傳回輸出 `Age unavailable`。