Nullable(T)
Позволяет хранить специальный маркер (NULL), который обозначает "отсутствующее значение", вместе с нормальными значениями, допустимыми для T. Например, столбец типа Nullable(Int8) может хранить значения типа Int8, а строки, которые не имеют значения, будут хранить NULL.
T не может быть любым из составных типов данных Array, Map и Tuple, но составные типы данных могут содержать значения типа Nullable, например Array(Nullable(Int8)).
Поле типа Nullable не может быть включено в индексы таблицы.
NULL является значением по умолчанию для любого типа Nullable, если не указано иное в конфигурации сервера ClickHouse.
Storage Features
Чтобы хранить значения типа Nullable в столбце таблицы, ClickHouse использует отдельный файл с масками NULL в дополнение к обычному файлу со значениями. Записи в файле масок позволяют ClickHouse различать NULL и значение по умолчанию соответствующего типа данных для каждой строки таблицы. Из-за дополнительного файла столбец Nullable потребляет дополнительное пространство для хранения по сравнению с аналогичным нормальным столбцом.
Использование Nullable почти всегда отрицательно сказывается на производительности, имейте это в виду при проектировании ваших баз данных.
Finding NULL
Можно найти значения NULL в столбце, используя подстолбец null без чтения всего столбца. Он возвращает 1, если соответствующее значение равно NULL, и 0 в противном случае.
Пример
Запрос:
Результат: