跳转到主内容
跳转到主内容

singleValueOrNull

singleValueOrNull

引入于:v21.9

聚合函数 singleValueOrNull 用于实现子查询操作符,例如 x = ALL (SELECT ...)。它会检查数据中是否只有一个唯一且非 NULL 的值。 如果只有一个唯一值,则返回该值;如果没有任何值,或存在至少两个不同的值,则返回 NULL。

语法

singleValueOrNull(x)

参数

  • x — 任意数据类型的列,但不包括 Map、Array 或 Tuple(这些类型不能为 Nullable 类型)。Any

返回值

如果 x 中只有一个唯一的非 NULL 值,则返回该唯一值;如果不存在任何非 NULL 值,或者存在至少两个不同的非 NULL 值,则返回 NULL。返回类型为 AnyNULL

示例

单个唯一值

CREATE TABLE test (x UInt8 NULL) ENGINE=Log;
INSERT INTO test (x) VALUES (NULL), (NULL), (5), (NULL), (NULL);
SELECT singleValueOrNull(x) FROM test;
┌─singleValueOrNull(x)─┐
│                    5 │
└──────────────────────┘

多个不同的值

INSERT INTO test (x) VALUES (10);
SELECT singleValueOrNull(x) FROM test;
┌─singleValueOrNull(x)─┐
│                 ᴺᵁᴸᴸ │
└──────────────────────┘