Функции для работы с Nullable-аргументами
isNull
Проверяет является ли аргумент NULL.
isNull(x)
Синоним: ISNULL
.
Аргументы
x
— значение с не составным типом данных.
Возвращаемое значение
1
, еслиx
—NULL
.0
, еслиx
— неNULL
.
Пример
Входная таблица
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │ 3 │
└───┴──────┘
Запрос
SELECT x FROM t_null WHERE isNull(y);
┌─x─┐
│ 1 │
└───┘
isNotNull
Проверяет не является ли аргумент NULL.
isNotNull(x)
Аргументы
x
— значение с не составным типом данных.
Возвращаемое значение
0
, еслиx
—NULL
.1
, еслиx
— неNULL
.
Пример
Входная таблица
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │ 3 │
└───┴──────┘
Запрос
SELECT x FROM t_null WHERE isNotNull(y);
┌─x─┐
│ 2 │
└───┘
coalesce
Последовательно слева-направо проверяет являются ли переданные аргументы NULL
и возвращает первый не NULL
.
coalesce(x,...)
Аргументы
- Произвольное количество параметров не составного типа. Все параметры должны быть совместимы по типу данных.
Возвращаемые значения
- Первый не
NULL
аргумент. NULL
, если все аргументы —NULL
.
Пример
Рассмотрим адресную книгу, в которой может быть указано несколько способов связи с клиентом.
┌─name─────┬─mail─┬─phone─────┬──icq─┐
│ client 1 │ ᴺᵁᴸᴸ │ 123-45-67 │ 123 │
│ client 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴──────┘
Поля mail
и phone
имеют тип String, а поле icq
— UInt32
, его необходимо будет преобразовать в String
.
Получим из адресной книги первый доступный способ связаться с клиентом:
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 │ ᴺᵁᴸᴸ │
└──────────┴──────────────────────────────────────────────────────┘
ifNull
Возвращает альтернативное значение, если основной аргумент — NULL
.
ifNull(x,alt)
Аргументы
x
— значение для проверки наNULL
,alt
— значение, которое функция вернёт, еслиx
—NULL
.
Возвращаемые значения
- Значение
x
, еслиx
— неNULL
. - Значение
alt
, еслиx
—NULL
.
Пример
SELECT ifNull('a', 'b');
┌─ifNull('a', 'b')─┐
│ a │
└──────────────────┘
SELECT ifNull(NULL, 'b');
┌─ifNull(NULL, 'b')─┐
│ b │
└───────────────────┘
nullIf
Возвращает NULL
, если аргументы равны.
nullIf(x, y)
Аргументы
x
, y
— значения для сравнивания. Они должны быть совм естимых типов, иначе ClickHouse сгенерирует исключение.
Возвращаемые значения
NULL
, если аргументы равны.- Значение
x
, если аргументы не равны.
Пример
SELECT nullIf(1, 1);
┌─nullIf(1, 1)─┐
│ ᴺᵁᴸᴸ │
└──────────────┘
SELECT nullIf(1, 2);
┌─nullIf(1, 2)─┐
│ 1 │
└──────────────┘