# NULL 值处理

由于数据库查询和/或表格之间的连接，当某个字段无数据产生时，结果通常为 NULL 值。



## 概述

Qlik Sense 逻辑将以下值视为真正的 NULL 值：

* 从 ODBC 连接返回的 NULL 值。

* 由于在数据加载脚本中强制表格串联而创建的 NULL 值。

* 由于在数据加载脚本中进行联接而创建的 NULL 值

* 由于生成在表格中显示的字段值组合而创建的 NULL 值

信息注释通常可以将这些 NULL 值用于关联和选择内容，但使用 NullAsValue 语句时除外。

有关 NullAsValue 的更多信息，请参阅[NullAsValue](https://help.qlik.com/zh-CN/sense/May2026/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; 符号将替代来自数据输入最低级别上 NULL 数据源的全部 ODBC 值。&lt;sym&gt; 可以是任意字符串。

要重置此功能到默认解释，请使用以下语法：

SET NULLDISPLAY=;

信息注释使用 NULLDISPLAY 仅会影响来自 ODBC 数据源中的数据。

如果您希望将 Qlik Sense 逻辑将 NULL 连接返回的 ODBC 值解释为一个空白字符串，请在任意 SELECT 语句之前添加以下内容到脚本：

SET NULLDISPLAY=";

信息注释这里的 " 实际上是两个单引号，中间没有任何内容。

有关 NullDisplay 的更多信息，请参阅[NullDisplay](https://help.qlik.com/zh-CN/sense/May2026/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 仅可影响来自文本文件和内联子句的数据！

有关 NullInterpret 的更多信息，请参阅[NullInterpret](https://help.qlik.com/zh-CN/sense/May2026/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) |