You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
ByteHouse 企业版

ByteHouse 企业版

复制全文
下载 pdf
常用函数
Nullable 函数
复制全文
下载 pdf
Nullable 函数

isNull

检查参数是否为NULL。

isNull(x)

参数

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

返回值

  • 1 如果xNULL
  • 0 如果x不为NULL

示例
存在以下内容的表

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

对其进行查询

:) SELECT x FROM t_null WHERE isNull(y)

SELECT x
FROM t_null
WHERE isNull(y)

┌─x─┐
│ 1 │
└───┘

1 rows in set. Elapsed: 0.010 sec.

isNotNull

检查参数是否不为 NULL.

isNotNull(x)

参数:

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

返回值

  • 0 如果xNULL
  • 1 如果x不为NULL

示例
存在以下内容的表

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

对其进行查询

:) SELECT x FROM t_null WHERE isNotNull(y)

SELECT x
FROM t_null
WHERE isNotNull(y)

┌─x─┐
│ 2 │
└───┘

1 rows in set. Elapsed: 0.010 sec.

合并

检查从左到右是否传递了«NULL»参数并返回第一个非'NULL参数。

coalesce(x,...)

参数:

  • 任何数量的非复合类型的参数。所有参数必须与数据类型兼容。

返回值

  • 第一个非’NULL`参数。
  • NULL,如果所有参数都是’NULL`。

示例
考虑可以指定多种联系客户的方式的联系人列表。

┌─name─────┬─mail─┬─phone─────┬──icq─┐
│ client 1 │ ᴺᵁᴸᴸ │ 123-45-67 │  123 │
│ client 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ      │ ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴──────┘

mailphone字段是String类型,但icq字段是UInt32,所以它需要转换为String
从联系人列表中获取客户的第一个可用联系方式:

:) SELECT coalesce(mail, phone, CAST(icq,'Nullable(String)')) FROM aBook

SELECT coalesce(mail, phone, CAST(icq, 'Nullable(String)'))
FROM aBook

┌─name─────┬─coalesce(mail, phone, CAST(icq, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                            │
│ client 2 │ ᴺᵁᴸᴸ                                                 │
└──────────┴──────────────────────────────────────────────────────┘

2 rows in set. Elapsed: 0.006 sec.

ifNull

如果第一个参数为«NULL»,则返回第二个参数的值。

ifNull(x,alt)

参数:

  • x — 要检查«NULL»的值。
  • alt — 如果x为’NULL`,函数返回的值。

返回值

  • 价值 x,如果 x 不是 NULL.
  • 价值 alt,如果 xNULL.

示例

SELECT ifNull('a', 'b')

┌─ifNull('a', 'b')─┐
│ a                │
└──────────────────┘

SELECT ifNull(NULL, 'b')

┌─ifNull(NULL, 'b')─┐
│ b                 │
└───────────────────┘

nullIf

如果参数相等,则返回NULL

nullIf(x, y)

参数:
x, y — 用于比较的值。 它们必须是类型兼容的,否则将抛出异常。
返回值

  • 如果参数相等,则为NULL
  • 如果参数不相等,则为x值。

示例

SELECT nullIf(1, 1)

┌─nullIf(1, 1)─┐
│         ᴺᵁᴸᴸ │
└──────────────┘

SELECT nullIf(1, 2)

┌─nullIf(1, 2)─┐
│            1 │
└──────────────┘

assumeNotNull

将可为空类型的值转换为非Nullable类型的值。

assumeNotNull(x)

参数:

  • x — 原始值。

返回值

  • 如果x不为NULL,返回非Nullable类型的原始值。
  • 如果xNULL,返回对应非Nullable类型的默认值。

示例
存在如下t_null表。

SHOW CREATE TABLE t_null

┌─statement─────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_null ( x Int8,  y Nullable(Int8)) ENGINE = TinyLog │
└───────────────────────────────────────────────────────────────────────────┘

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

将列y作为assumeNotNull函数的参数。

SELECT assumeNotNull(y) FROM t_null

┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘

SELECT toTypeName(assumeNotNull(y)) FROM t_null

┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘

可调整

将参数的类型转换为Nullable

toNullable(x)

参数:

  • x — 任何非复合类型的值。

返回值

  • 输入的值,但其类型为Nullable

示例

SELECT toTypeName(10)

┌─toTypeName(10)─┐
│ UInt8          │
└────────────────┘

SELECT toTypeName(toNullable(10))

┌─toTypeName(toNullable(10))─┐
│ Nullable(UInt8)            │
└────────────────────────────┘
最近更新时间:2024.11.11 17:54:03
这个页面对您有帮助吗?
有用
有用
无用
无用