# IsNull 脚本和图表功能

IsNull 函数用于检验表达式的值是否为 NULL，如果是，则返回 -1 (True)，否则返回 0 (False)。

语法：

IsNull(expr )

信息注释不能将长度为零的字符串看作是 NULL，否则将会导致 IsNull 函数返回 False。

返回数据类型： 布尔值

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `IsNull(Productname)` | 如果 `ProductName` 为空值，则返回 `-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` 字段是否包含空值，返回值 `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`，其值满足语 `IF` 句的条件：`len(trim(Value))= 0 or Value='NULL' or Value='-'`。最后一行返回输入的值，`378`。

第二个度量（第 4 列）取第 3 列中表达式的值，并返回 `T` if `NULL` 或 `F` if not`NULL`。结果显示，前 3 行为空值。

[](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)

#### 图表表达式

概述

对销售数据集进行分析，以查看哪些字段具有空值。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 设置为 `NULL` 的 `NULLINTERPRET` 变量。

* 数据表中有以下字段：

  * `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)`，用值 `Age unavailable` 填充 `Age` 字段，前提是该值为 `NULL`。

* `=If(IsNull(Email), 'Email unavailable', Email)`，用值 `Email unavailable` 填充 `Email` 字段，前提是该值为 `NULL`。

* `=If(IsNull(Region), 'Region unavailable', Region)`，用值 `Region unavailable` 填充 `Region` 字段，前提是该值为 `NULL`。

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` 函数检查空值并在发现空值时返回 true，其结果表明数据集中的几个字段包含空值。例如，在 `Age` 列中识别出 `Charlie Lee` 的空值，并返回输出 `Age unavailable`。