# EmptyIsNull 指令碼與圖表函數

EmptyIsNull 函數將空的字串轉換為 NULL。因此，若參數是空的字串，這會傳回 NULL，否則會傳回參數。

語法：

EmptyIsNull(exp )

傳回的資料類型： 若參數是空的字串，就會傳回 NULL，否則會傳回參數

引數

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

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `EmptyIsNull(AdditionalComments)` | 此運算式將會對 `AdditionalComments` 欄位任何空的字串值傳回 NULL，而非傳回空的字串。會傳回非空字串和數字。 |
| `EmptyIsNull(PurgeChar(PhoneNumber, ' -()'))` | 此運算式將會從 `PhoneNumber` 欄位移除任何破折號、空格和括弧。若沒有剩下任何字元，`EmptyIsNull` 函數會以 NULL 傳回空的字串；空的 phone number 與無 phone number 相同。 |

## 範例 - EmptyIsNull 基礎事項

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

#### 圖表運算式

概述

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

載入指令碼包含：

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

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

  * `CustomerID`

  * `OrderID`

  * `Product`

  * `Status`

  * `PhoneNumber`

載入指令碼

```
Example:
LOAD * inline [
CustomerID, OrderID, Product, Status, PhoneNumber
1, 1001, Widget,, (0123) 456 789
2, 1002, Gizmo, Open,-
3, 1003, Gadget, Closed,()
4, 1004, Widget,,678-9888
];
```

結果

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

* `CustomerID`

* `OrderID`

* `Product`

* `Status`

建立下列計算維度：

* `=EmptyIsNull(Status)`，將 `Status` 欄位中的任何空字串值作為 NULL 傳回。

* `=EmptyIsNull(PurgeChar(PhoneNumber, ' -()'))`，用來從 `PhoneNumber` 欄位移除任何破折號、空格和括弧。若沒有剩下任何字元，`EmptyIsNull` 函數會以 NULL 傳回空的字串；空的電話號碼與無電話號碼相同。

資訊備註下表包含空儲存格，用於示範 `EmptyIsNull` 函數的用法。

Results table

| CustomerID | OrderID | Product | Status | EmptyIsNull(Status) | EmptyIsNull(PurgeChar(PhoneNumber, ' -()')) |
| --- | --- | --- | --- | --- | --- |
| 1 | 1001 | Widget |  | - | 0123456789 |
| 2 | 1002 | Gizmo | Open | Open | - |
| 3 | 1003 | Gadget | Closed | Closed | - |
| 4 | 1004 | Widget |  | - | 6789888 |

在 `Status` 欄中，請注意，具有空值的記錄顯示為具有預設透明背景顏色的空儲存格。`EmptyIsNull(Status)` 量值的輸出對於這些空值傳回 NULL，如含有灰色儲存格背景的破折號 (-) 字元所示。

第二個量值使用 `EmptyIsNull` 函數與 [PurgeChar 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/PurgeChar.htm)，以從 `PhoneNumber` 欄位中移除任何破折號 (-)、空格和括弧 ()，然後將任何剩餘的空字串作為 NULL 傳回。具有 Null 值的儲存格現在以破折號 (-) 和灰色背景格式顯示。

## 範例 - 使用文字取代 Null 值並新增條件格式

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

#### 圖表運算式

概述

銷售經理希望分析銷售資料並輕鬆識別包含遺漏值的記錄。

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

載入指令碼包含：

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

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

  * `ID`

  * `Name`

  * `Age`

  * `Email`

  * `Sales`

  * `Region`

  * `OrderStatus`

載入指令碼

```
Example:
LOAD * inline [
ID,Name, Age, Email, Sales, Region, OrderStatus
1, John Smith, 30, john@email.com, 1000, North, Active
2, Jane Doe, '', jane@email.com, 1500, South, Active
3, Bob Johnson, 45, '', 800, East, Inactive
4, Alice Brown, 28, alice@email.com, '', West, Active
5, Charlie Lee, '', charlie@email.com, 1200, '', Active
6, Eva Green, 35, eva@email.com, 950, North, ''
7, David White, 50, '', '', South, Inactive
8, Fiona Black, 42, fiona@email.com, 1100, East, Active
];
```

結果

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

* `ID`

建立下列計算維度：

* `=If(IsNull(EmptyIsNull(Age)), 'NULL', EmptyIsNull(Age))`，用來將 `Age` 欄位中的任何空字串值作為 NULL 傳回，然後使用值 `NULL` (而不是破折號 (`-`) 字元) 識別並填入所有 Null 值。

* `=If(IsNull(EmptyIsNull(Email)), 'NULL', EmptyIsNull(Email))`，用來將 `Email` 欄位中的任何空字串值作為 NULL 傳回，然後使用值 `NULL` (而不是破折號 (`-`) 字元) 識別並填入所有 Null 值。

* `=If(IsNull(EmptyIsNull(Sales)), 'NULL', EmptyIsNull(Sales))`，用來將 `Sales` 欄位中的任何空字串值作為 NULL 傳回，然後使用值 `NULL` (而不是破折號 (`-`) 字元) 識別並填入所有 Null 值。

* `=If(IsNull(EmptyIsNull(Region)), 'NULL', EmptyIsNull(Region))`，用來將 `Region` 欄位中的任何空字串值作為 NULL 傳回，然後使用值 `NULL` (而不是破折號 (`-`) 字元) 識別並填入所有 Null 值。

* `=If(IsNull(EmptyIsNull(OrderStatus)), 'NULL', EmptyIsNull(OrderStatus))`，用來將 `OrderStatus` 欄位中的任何空字串值作為 NULL 傳回，然後使用值 `NULL` (而不是破折號 (`-`) 字元) 識別並填入所有 Null 值。

設定條件儲存格格式，以將 `NULL` 值的背景顏色變更為紅色，並將其他所有值的背景顏色變更為綠色。在每個維度和量值的屬性面板中，輸入下列運算式作為背景色彩運算式：

* `ID` (維度)： `=RGB(200,255,200)`

* `Age` (量值)： `=If(IsNull(EmptyIsNull(Age)), RGB(255,200,200), RGB(200,255,200))`

* `Email` (量值)：`=If(IsNull(EmptyIsNull(Email)), RGB(255,200,200), RGB(200,255,200))`

* `Sales` (量值)：`=If(IsNull(EmptyIsNull(Sales)), RGB(255,200,200), RGB(200,255,200))`

* `Region` (量值)：`=If(IsNull(EmptyIsNull(Region)), RGB(255,200,200), RGB(200,255,200))`

* `OrderStatus` (量值)：`=If(IsNull(EmptyIsNull(OrderStatus)), RGB(255,200,200), RGB(200,255,200))`

Results table

| ID | If(IsNull(EmptyIsNull(Age)), 'NULL', EmptyIsNull(Age)) | If(IsNull(EmptyIsNull(Email)), 'NULL', EmptyIsNull(Email)) | If(IsNull(EmptyIsNull(Sales)), 'NULL', EmptyIsNull(Sales)) | If(IsNull(EmptyIsNull(Region)), 'NULL', EmptyIsNull(Region)) | If(IsNull(EmptyIsNull(OrderStatus)), 'NULL', EmptyIsNull(OrderStatus)) |
| --- | --- | --- | --- | --- | --- |
| 1 | 30 | john@email.com | 1000 | North | Active |
| 2 | NULL | jane@email.com | 1500 | South | Active |
| 3 | 45 | NULL | 800 | East | Inactive |
| 4 | 28 | alice@email.com | NULL | West | Active |
| 5 | NULL | charlie@email.com | 1200 | NULL | Active |
| 6 | 35 | eva@email.com | 950 | North | NULL |
| 7 | 50 | NULL | NULL | South | Inactive |
| 8 | 42 | fiona@email.com | 1100 | East | Active |

結果顯示，透過使用 `EmptyIsNull` 函數並新增條件格式，可以輕鬆識別有遺漏值的記錄。