* DOCSUP-2806: Add meta intro. * DOCSUP-2806: Update meta intro. * DOCSUP-2806: Fix meta. * DOCSUP-2806: Add quotes for meta headers. * DOCSUP-2806: Remove quotes from meta headers. * DOCSUP-2806: Add meta headers. * DOCSUP-2806: Fix quotes in meta headers. * DOCSUP-2806: Update meta headers. * DOCSUP-2806: Fix link to nowhere in EN. * DOCSUP-2806: Fix link (settings to tune) * DOCSUP-2806: Fix links. * DOCSUP-2806:Fix links EN * DOCSUP-2806: Fix build errors. * DOCSUP-2806: Fix meta intro. * DOCSUP-2806: Fix toc_priority in examples datasets TOC. * DOCSUP-2806: Fix items order in toc. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc order. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc index in create * DOCSUP-2806: Fix toc order in create. Co-authored-by: romanzhukov <romanzhukov@yandex-team.ru> Co-authored-by: alexey-milovidov <milovidov@yandex-team.ru>
8.1 KiB
toc_priority | toc_title |
---|---|
63 | Функции для работы с Nullable-аргументами |
Функции для работы с Nullable-аргументами
isNull
Проверяет является ли аргумент NULL.
isNull(x)
Параметры
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 │
└──────────────┘
assumeNotNull
Приводит значение типа Nullable к не Nullable
, если значение не NULL
.
assumeNotNull(x)
Параметры
x
— исходное значение.
Возвращаемые значения
- Исходное значение с не
Nullable
типом, если оно — неNULL
. - Значение по умолчанию для не
Nullable
типа, если исходное значение —NULL
.
Пример
Рассмотрим таблицу 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 │
└───┴──────┘
Применим функцию assumeNotNull
к столбцу y
.
SELECT assumeNotNull(y) FROM t_null
┌─assumeNotNull(y)─┐
│ 0 │
│ 3 │
└──────────────────┘
SELECT toTypeName(assumeNotNull(y)) FROM t_null
┌─toTypeName(assumeNotNull(y))─┐
│ Int8 │
│ Int8 │
└──────────────────────────────┘
toNullable
Преобразует тип аргумента к Nullable
.
toNullable(x)
Параметры
x
— значение произвольного не составного типа.
Возвращаемое значение
- Входное значение с типом не
Nullable
.
Пример
SELECT toTypeName(10)
┌─toTypeName(10)─┐
│ UInt8 │
└────────────────┘
SELECT toTypeName(toNullable(10))
┌─toTypeName(toNullable(10))─┐
│ Nullable(UInt8) │
└────────────────────────────┘