跳到主要内容
跳到主要内容

处理 Nullable 值的函数

isNull

返回参数是否为 NULL

另见运算符 IS NULL

语法

别名:ISNULL

参数

  • x — 非复合数据类型的值。

返回值

  • 如果 xNULL,则返回 1
  • 如果 x 不为 NULL,则返回 0

示例

表格:

查询:

结果:

isNullable

如果列为 Nullable(即允许 NULL 值),则返回 1,否则返回 0

语法

参数

  • x — 列。

返回值

  • 如果 x 允许 NULL 值,则返回 1UInt8
  • 如果 x 不允许 NULL 值,则返回 0UInt8

示例

查询:

结果:

isNotNull

返回参数是否不为 NULL

另见运算符 IS NOT NULL

参数:

  • x — 非复合数据类型的值。

返回值

  • 如果 x 不为 NULL,则返回 1
  • 如果 xNULL,则返回 0

示例

表格:

查询:

结果:

isNotDistinctFrom

执行 null 安全比较。用于比较 JOIN ON 部分包含 NULL 值的 JOIN 键。 该函数会将两个 NULL 值视为相同,返回 true,这与通常的相等行为不同,后者比较两个 NULL 值时会返回 NULL

备注

该函数是 JOIN ON 实现使用的内部函数。请勿在查询中手动使用。

语法

参数

  • x — 第一个 JOIN 键。
  • y — 第二个 JOIN 键。

返回值

  • xy 都为 NULL 时返回 true
  • 否则返回 false

示例

完整示例见: JOIN 键中的 NULL 值

isZeroOrNull

返回参数是否为 0(零)或 NULL

参数:

  • x — 非复合数据类型的值。

返回值

  • 如果 x 为 0(零)或 NULL,则返回 1
  • 否则返回 0

示例

表格:

查询:

结果:

coalesce

返回最左侧的非 NULL 参数。

参数:

  • 任意数量的非复合类型参数。所有参数必须为相互兼容的数据类型。

返回值

  • 第一个非 NULL 参数
  • 如果所有参数均为 NULL,则返回 NULL

示例

考虑一组联系人,可以指定多种联系客户的方式。

mailphone 字段为 String 类型,但 telegram 字段为 UInt32 类型,因此需要转换为 String。

从联系人列表中获取客户的第一个可用联系方法:

ifNull

如果参数为 NULL,则返回替代值。

参数:

  • x — 要检查是否为 NULL 的值。
  • alt — 如果 xNULL,函数返回的值。

返回值

  • 如果 x 不为 NULL,则返回 x
  • 如果 xNULL,则返回 alt

示例

查询:

结果:

查询:

结果:

nullIf

如果两个参数相等,则返回 NULL

参数:

xy — 要比较的值。必须为兼容类型。

返回值

  • 如果参数相等,则返回 NULL
  • 如果参数不相等,则返回 x

示例

查询:

结果:

查询:

结果:

assumeNotNull

返回对应的非 Nullable 值,适用于 Nullable 类型的值。如果原始值为 NULL,则可以返回任意结果。另见函数 ifNullcoalesce

参数:

  • x — 原始值。

返回值

  • 如果输入值不为 NULL,则以非 Nullable 类型返回输入值。
  • 如果输入值为 NULL,则返回任意值。

示例

表格:

查询:

结果:

查询:

结果:

toNullable

将参数类型转换为 Nullable

参数:

  • x — 非复合类型的值。

返回值

  • 输入值,但为 Nullable 类型。

示例

查询:

结果:

查询:

结果: