* Typo fix. * Links fix. * Fixed links in docs. * More fixes. * docs/en: cleaning some files * docs/en: cleaning data_types * docs/en: cleaning database_engines * docs/en: cleaning development * docs/en: cleaning getting_started * docs/en: cleaning interfaces * docs/en: cleaning operations * docs/en: cleaning query_lamguage * docs/en: cleaning en * docs/ru: cleaning data_types * docs/ru: cleaning index * docs/ru: cleaning database_engines * docs/ru: cleaning development * docs/ru: cleaning general * docs/ru: cleaning getting_started * docs/ru: cleaning interfaces * docs/ru: cleaning operations * docs/ru: cleaning query_language * docs: cleaning interfaces/http * Update docs/en/data_types/array.md decorated ``` Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/nyc_taxi.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/ontime.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/interfaces/formats.md fixed error Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/custom_partitioning_key.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/dicts/external_dicts_dict_sources.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/date_time_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/jdbc.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * docs: fixed error * docs: fixed error
3.4 KiB
FixedString
Строка фиксированной длины N
байт (не символов, не кодовых точек).
Чтобы объявить столбец типа FixedString
, используйте следующий синтаксис:
<column_name> FixedString(N)
Где N
— натуральное число.
Тип FixedString
эффективен, когда данные имеют длину ровно N
байт. Во всех остальных случаях использование FixedString может привести к снижению эффективности.
Примеры значений, которые можно эффективно хранить в столбцах типа 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
, то необходимо добавлять нулевые байты вручную, чтобы ClickHouse смог сопоставить выражение из фильтра значению FixedString
. Следующий пример показывает, как использовать секцию WHERE
с FixedString
.
Рассмотрим следующую таблицу с единственным столбцом типа FixedString(2)
:
┌─name──┐
│ b │
└───────┘
Запрос SELECT * FROM FixedStringTable WHERE a = 'b'
не возвращает необходимых данных. Необходимо дополнить шаблон фильтра нулевыми байтами.
SELECT * FROM FixedStringTable
WHERE a = 'b\0'
┌─a─┐
│ b │
└───┘
Это поведение отличается от поведения MySQL для типа CHAR
, где строки дополняются пробелами, а пробелы перед выводом вырезаются.
Обратите внимание, что длина значения FixedString(N)
постоянна. Функция length возвращает N
даже если значение FixedString(N)
заполнено только нулевыми байтами, однако функция empty в этом же случае возвращает 1
.