Pular para o conteúdo principal
Permite armazenar um marcador especial (NULL) que indica “valor ausente” junto com os valores normais permitidos por T. Por exemplo, uma coluna do tipo Nullable(Int8) pode armazenar valores do tipo Int8, e as linhas que não tiverem um valor armazenarão NULL. T não pode ser nenhum dos seguintes tipos de dados compostos:
  • Array — Sem suporte
  • Map — Sem suporte
  • Tuple — Suporte experimental disponível*
No entanto, tipos de dados compostos podem conter valores do tipo Nullable, por exemplo, Array(Nullable(Int8)) ou Tuple(Nullable(String), Nullable(Int64)).
Experimental: Tuplas Nullable
  • Nullable(Tuple(…)) tem suporte quando allow_experimental_nullable_tuple_type = 1 está habilitado.
Um campo do tipo Nullable não pode ser incluído em índices da tabela. NULL é o valor padrão de qualquer tipo Nullable, salvo especificação em contrário na configuração do servidor ClickHouse.

Recursos de armazenamento

Para armazenar valores do tipo Nullable em uma coluna de tabela, o ClickHouse usa um arquivo separado com máscaras NULL, além do arquivo normal com os valores. As entradas no arquivo de máscaras permitem que o ClickHouse diferencie, em cada linha da tabela, entre NULL e o valor padrão do tipo de dado correspondente. Por causa desse arquivo adicional, uma coluna Nullable consome mais espaço de armazenamento do que uma coluna normal semelhante.
Usar Nullable quase sempre afeta negativamente o desempenho. Tenha isso em mente ao projetar seus bancos de dados.

Encontrando NULL

É possível localizar valores NULL em uma coluna usando a subcoluna null, sem precisar ler a coluna inteira. Ela retorna 1 se o valor correspondente for NULL e 0, caso contrário. Exemplo
Query
CREATE TABLE nullable (`n` Nullable(UInt32)) ENGINE = MergeTree ORDER BY tuple();

INSERT INTO nullable VALUES (1) (NULL) (2) (NULL);

SELECT n.null FROM nullable;
Response
┌─n.null─┐
│      0 │
│      1 │
│      0 │
│      1 │
└────────┘

Exemplo de uso

CREATE TABLE t_null(x Int8, y Nullable(Int8)) ENGINE TinyLog
INSERT INTO t_null VALUES (1, NULL), (2, 3)
SELECT x + y FROM t_null
┌─plus(x, y)─┐
│       ᴺᵁᴸᴸ │
│          5 │
└────────────┘
Última modificação em 10 de junho de 2026