Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funções para trabalhar com valores Nullable

assumeNotNull

Introduzido em: v1.1.0

Retorna o valor não Nullable correspondente a um valor do tipo Nullable. Se o valor original for NULL, um resultado arbitrário poderá ser retornado.

Veja também: as funções ifNull e coalesce.

Sintaxe

assumeNotNull(x)

Argumentos

  • x — O valor original de qualquer tipo Nullable. Nullable(T)

Valor retornado

Retorna o valor não anulável se o valor original não for NULL; caso contrário, retorna um valor arbitrário se o valor de entrada for NULL. Any

Exemplos

Exemplo de uso

CREATE TABLE t_null (x Int8, y Nullable(Int8))
ENGINE=MergeTree()
ORDER BY x;

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT assumeNotNull(y) FROM t_null;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘

coalesce

Introduzido em: v1.1.0

Retorna o argumento não NULL mais à esquerda.

Sintaxe

coalesce(x[, y, ...])

Argumentos

  • x[, y, ...] — Qualquer número de parâmetros de tipo não composto. Todos os parâmetros devem ser de tipos de dados compatíveis entre si. Any

Valor retornado

Retorna o primeiro argumento não NULL; caso todos os argumentos sejam NULL, retorna NULL. Any ou NULL

Exemplos

Exemplo de uso

-- Consider a list of contacts that may specify multiple ways to contact a customer.

CREATE TABLE aBook
(
    name String,
    mail Nullable(String),
    phone Nullable(String),
    telegram Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO aBook VALUES ('client 1', NULL, '123-45-67', 123), ('client 2', NULL, NULL, NULL);

-- The mail and phone fields are of type String, but the telegram field is UInt32 so it needs to be converted to String.

-- Get the first available contact method for the customer from the contact list

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

firstNonDefault

Introduzido em: v25.9.0

Retorna o primeiro valor diferente do padrão de um conjunto de argumentos

Sintaxe

firstNonDefault(arg1[, arg2[ ...]])

Argumentos

  • arg1 — O primeiro argumento a ser verificado - arg2 — O segundo argumento a ser verificado - ... — Argumentos adicionais a serem verificados

Valor retornado

O tipo do resultado é o supertipo de todos os argumentos

Exemplos

inteiros

SELECT firstNonDefault(0, 1, 2)
1

strings

SELECT firstNonDefault('', 'hello', 'world')
hello

NULLs

SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
1

zero Nullable

SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
0

ifNull

Introduzido na versão: v1.1.0

Retorna um valor alternativo se o primeiro argumento for NULL.

Sintaxe

ifNull(x, alt)

Argumentos

  • x — O valor a verificar se é NULL. Any
  • alt — O valor que a função retorna se x for NULL. Any

Valor retornado

Retorna o valor de x se ele não for NULL; caso contrário, alt. Any

Exemplos

Exemplo de uso

SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘

isNotNull

Introduzido em: v1.1.0

Verifica se o argumento não é NULL.

Veja também: operador IS NOT NULL.

Sintaxe

isNotNull(x)

Argumentos

  • x — Um valor de um tipo de dado não composto. Any

Valor retornado

Retorna 1 se x não for NULL; caso contrário, 0. UInt8

Exemplos

Exemplo de uso

CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT x FROM t_null WHERE isNotNull(y);
┌─x─┐
│ 2 │
└───┘

isNull

Introduzido em: v1.1.0

Verifica se o argumento é NULL.

Veja também: operador IS NULL.

Sintaxe

isNull(x)

Argumentos

  • x — Um valor de tipo de dado não composto. Any

Valor retornado

Retorna 1 se x for NULL; caso contrário, 0. UInt8

Exemplos

Exemplo de uso

CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT x FROM t_null WHERE isNull(y);
┌─x─┐
│ 1 │
└───┘

isNullable

Introduzido na versão: v22.7.0

Verifica se o tipo de dado do argumento é Nullable (ou seja, se permite valores NULL).

Sintaxe

isNullable(x)

Argumentos

  • x — Um valor de qualquer tipo de dado. Any

Valor retornado

Retorna 1 se x for do tipo de dado Nullable; caso contrário, 0. UInt8

Exemplos

Exemplo de uso

CREATE TABLE tab (
    ordinary_col UInt32,
    nullable_col Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO tab (ordinary_col, nullable_col) VALUES (1,1), (2, 2), (3,3);
SELECT isNullable(ordinary_col), isNullable(nullable_col) FROM tab;
┌─isNullable(ordinary_col)─┬─isNullable(nullable_col)─┐
│                        0 │                        1 │
│                        0 │                        1 │
│                        0 │                        1 │
└──────────────────────────┴──────────────────────────┘

isZeroOrNull

Introduzido na versão: v20.3.0

Verifica se o argumento é igual a zero (0) ou NULL.

Sintaxe

isZeroOrNull(x)

Argumentos

  • x — Um valor numérico. UInt

Valor retornado

Retorna 1 se x for NULL ou igual a zero; caso contrário, 0. UInt8/16/32/64 ou Float32/Float64

Exemplos

Exemplo de uso

CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 0), (3, 3);

SELECT x FROM t_null WHERE isZeroOrNull(y);
┌─x─┐
│ 1 │
│ 2 │
└───┘

nullIf

Introduzido em: v1.1.0

Retorna NULL se os dois argumentos forem iguais.

Sintaxe

nullIf(x, y)

Argumentos

  • x — O primeiro valor. Any
  • y — O segundo valor. Any

Valor retornado

Retorna NULL se ambos os argumentos forem iguais; caso contrário, retorna o primeiro argumento. NULL ou Nullable(x)

Exemplos

Exemplo de uso

SELECT nullIf(1, 1), nullIf(1, 2);
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘

toNullable

Introduzido em: v1.1.0

Converte o tipo do argumento fornecido para Nullable.

Sintaxe

toNullable(x)

Argumentos

  • x — Um valor de qualquer tipo não composto. Any

Valor retornado

Retorna o valor de entrada, mas com o tipo Nullable. Nullable(Any)

Exemplos

Exemplo de uso

SELECT toTypeName(10), toTypeName(toNullable(10));
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
Navigation