Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
Nullable(typename)
Permet de stocker marqueur spécial (NULL) qui dénote “missing value” aux valeurs normales autorisées par TypeName
. Par exemple, un Nullable(Int8)
type colonne peut stocker Int8
type de valeurs, et les lignes qui n'ont pas de valeur magasin NULL
.
Pour un TypeName
vous ne pouvez pas utiliser les types de données composites Tableau et Tuple. Les types de données composites peuvent contenir Nullable
valeurs de type, telles que Array(Nullable(Int8))
.
A Nullable
le champ type ne peut pas être inclus dans les index de table.
NULL
est la valeur par défaut pour tout Nullable
type, sauf indication contraire dans la configuration du serveur ClickHouse.
Caractéristiques De Stockage
Stocker Nullable
valeurs de type dans une colonne de table, ClickHouse utilise un fichier séparé avec NULL
masques en plus du fichier normal avec des valeurs. Les entrées du fichier masks permettent à ClickHouse de faire la distinction entre NULL
et une valeur par défaut du type de données correspondant pour chaque ligne de table. En raison d'un fichier supplémentaire, Nullable
colonne consomme de l'espace de stockage supplémentaire par rapport à une normale similaire.
Note
Utiliser Nullable
affecte presque toujours négativement les performances, gardez cela à l'esprit lors de la conception de vos bases de données.
Exemple D'Utilisation
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 │
└────────────┘