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

FixedString(N)

Фиксированная строка длиной N байт (ни символов, ни кодовых точек).

Чтобы объявить колонку типа FixedString, используйте следующий синтаксис:

Где N — натуральное число.

Тип FixedString эффективен, когда данные имеют длину ровно N байт. В остальных случаях это может снизить эффективность.

Примеры значений, которые могут быть эффективно сохранены в колонках типа FixedString:

  • Бинарное представление IP-адресов (FixedString(16) для IPv6).
  • Языковые коды (ru_RU, en_US ... ).
  • Коды валют (USD, RUB ... ).
  • Бинарное представление хэшей (FixedString(16) для MD5, FixedString(32) для SHA256).

Чтобы хранить значения UUID, используйте тип данных UUID.

При вставке данных ClickHouse:

  • Дополняет строку нулевыми байтами, если строка содержит менее N байт.
  • Выбрасывает исключение Too large value for FixedString(N), если строка содержит более N байт.

При выборке данных ClickHouse не удаляет нулевые байты в конце строки. Если вы используете оператор WHERE, вам следует вручную добавлять нулевые байты для соответствия значению FixedString. Следующий пример иллюстрирует, как использовать оператор WHERE с FixedString.

Рассмотрим следующую таблицу с единственной колонкой FixedString(2):

Запрос SELECT * FROM FixedStringTable WHERE a = 'b' не возвращает никаких данных в результате. Мы должны дополнить фильтр нулевыми байтами.

Это поведение отличается от MySQL для типа CHAR (где строки заполняются пробелами, и пробелы удаляются при выводе).

Обратите внимание, что длина значения FixedString(N) постоянна. Функция length возвращает N, даже если значение FixedString(N) заполнено только нулевыми байтами, но функция empty возвращает 1 в этом случае.