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байт.
Рассмотрим следующую таблицу с единственным столбцом типа FixedString(2):
Обратите внимание, что длина значения FixedString(N) является фиксированной. Функция length возвращает N, даже если значение FixedString(N) заполнено только нулевыми байтами, однако функция empty в этом случае возвращает 1.
Выборка данных с предложением WHERE возвращает разные результаты в зависимости от того, как сформулировано условие:
- Если используется оператор равенства
=или==или функцияequals, ClickHouse не учитывает символ\0, т.е. запросыSELECT * FROM FixedStringTable WHERE name = 'a';иSELECT * FROM FixedStringTable WHERE name = 'a\0';возвращают один и тот же результат. - Если используется предложение
LIKE, ClickHouse учитывает символ\0, поэтому может потребоваться явно указать символ\0в условии фильтрации.