Перейти к основному содержимому
Перейти к основному содержимому

Nullable(T)

Позволяет хранить специальный маркер (NULL), который обозначает "отсутствующее значение", наряду с обычными значениями, допускаемыми типом T. Например, колонка типа Nullable(Int8) может хранить значения типа Int8, а строки, которые не имеют значения, будут хранить NULL.

T не может быть одним из составных типов данных Array, Map и Tuple, но составные типы данных могут содержать значения типа Nullable, например, Array(Nullable(Int8)).

Поле типа Nullable не может быть включено в индексы таблиц.

NULL является значением по умолчанию для любого типа Nullable, если не указано иное в конфигурации сервера ClickHouse.

Характеристики хранилища

Чтобы хранить значения типа Nullable в колонке таблицы, ClickHouse использует отдельный файл с масками NULL наряду с обычным файлом со значениями. Записи в файле масок позволяют ClickHouse различать NULL и значение по умолчанию для соответствующего типа данных для каждой строки таблицы. Из-за дополнительного файла колонка Nullable потребляет дополнительное место для хранения по сравнению с аналогичной обычной колонкой.

примечание

Использование Nullable почти всегда негативно сказывается на производительности, учитывайте это при проектировании ваших баз данных.

Поиск NULL

Можно найти значения NULL в колонке, использовав подколонку null, не читая всю колонку. Она возвращает 1, если соответствующее значение является NULL, и 0 в противном случае.

Пример

Запрос:

Результат:

Пример использования