Перейти к основному содержимому
Перейти к основному содержимому

singleValueOrNull

singleValueOrNull

Введена в версии: v21.9

Агрегатная функция singleValueOrNull используется для реализации операторов с подзапросами, таких как x = ALL (SELECT ...). Она проверяет, есть ли в данных ровно одно уникальное значение, отличное от NULL. Если уникальное значение только одно, она возвращает его. Если значений нет или как минимум два различных значения, она возвращает NULL.

Синтаксис

singleValueOrNull(x)

Аргументы

  • x — столбец любого типа данных, кроме Map, Array или Tuple, которые не могут быть типа Nullable. Any

Возвращаемое значение

Возвращает уникальное значение, если в x есть ровно одно уникальное значение, отличное от NULL. Возвращает NULL, если нет ни одного значения или есть как минимум два различных значения. Any или NULL

Примеры

Одно уникальное значение

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)─┐
│                 ᴺᵁᴸᴸ │
└──────────────────────┘