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
в этом случае.