Skip to main content
Skip to main content

Nullable(T)

Allows to store special marker (NULL) that denotes "missing value" alongside normal values allowed by T. For example, a Nullable(Int8) type column can store Int8 type values, and the rows that do not have a value will store NULL.

T can't be any of the composite data types Array, Map and Tuple but composite data types can contain Nullable type values, e.g. Array(Nullable(Int8)).

A Nullable type field can't be included in table indexes.

NULL is the default value for any Nullable type, unless specified otherwise in the ClickHouse server configuration.

Storage Features​

To store Nullable type values in a table column, ClickHouse uses a separate file with NULL masks in addition to normal file with values. Entries in masks file allow ClickHouse to distinguish between NULL and a default value of corresponding data type for each table row. Because of an additional file, Nullable column consumes additional storage space compared to a similar normal one.

Note

Using Nullable almost always negatively affects performance, keep this in mind when designing your databases.

Finding NULL​

It is possible to find NULL values in a column by using null subcolumn without reading the whole column. It returns 1 if the corresponding value is NULL and 0 otherwise.

Example

Query:

Result:

Usage Example​