NULL 值处理

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

概述

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

  • ODBC 连接返回的 NULL

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

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

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

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

有关 NullAsValue 的更多信息,请参阅NullAsValue

文本文件根据定义不能包含 NULL 值。

ODBC 关联/选择 NULL

ODBC 数据源可以关联和/或选择 NULL。为此,可用已定义的脚本。可以使用以下语法:

SET NULLDISPLAY=<sym>;

<sym> 符号将替代来自数据输入最低级别上 NULL 数据源的全部 ODBC 值。<sym> 可以是任意字符串。

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

SET NULLDISPLAY=;

备注: 使用 NULLDISPLAY 仅会影响来自 ODBC 数据源中的数据。

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

SET NULLDISPLAY=";

备注: 这里的 " 实际上是两个单引号,中间没有任何内容。

有关 NullDisplay 的更多信息,请参阅NullDisplay

从文本文件创建 NULL

可以定义一个符号,令其在文本文件或 inline 子句中出现时可被解释为真实 NULL 值。使用以下语句:

SET NULLINTERPRET=<sym>;

这里 <sym> 符号将被解释为 NULL.值<sym> 可以是任意字符串。

要重置此功能到默认解释,请使用:

SET NULLINTERPRET=;

备注: 使用 NULLINTERPRET 仅可影响来自文本文件和内联子句的数据!

有关 NullInterpret 的更多信息,请参阅NullInterpret

表达式中 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 <> NULL 返回 True (-1)
A < NULL 返回 False (0)
A <= NULL 返回 False (0)
A = NULL 返回 False (0)
A >= NULL 返回 False (0)
A > NULL 返回 False (0)