mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-19 15:01:03 +00:00
2d2bc052e1
* 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
57 lines
3.4 KiB
Markdown
57 lines
3.4 KiB
Markdown
# FixedString
|
||
|
||
Строка фиксированной длины `N` байт (не символов, не кодовых точек).
|
||
|
||
Чтобы объявить столбец типа `FixedString`, используйте следующий синтаксис:
|
||
|
||
```sql
|
||
<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](uuid.md).
|
||
|
||
При вставке данных, ClickHouse:
|
||
|
||
- Дополняет строку нулевыми байтами, если строка содержит меньше байтов, чем `N`.
|
||
- Генерирует исключение `Too large value for FixedString(N)`, если строка содержит более `N` байт.
|
||
|
||
При выборе данных ClickHouse не обрезает нулевые байты в конце строки. Если вы используете секцию `WHERE`, то необходимо добавлять нулевые байты вручную, чтобы ClickHouse смог сопоставить выражение из фильтра значению `FixedString`. Следующий пример показывает, как использовать секцию `WHERE` с `FixedString`.
|
||
|
||
Рассмотрим следующую таблицу с единственным столбцом типа `FixedString(2)`:
|
||
|
||
```text
|
||
┌─name──┐
|
||
│ b │
|
||
└───────┘
|
||
```
|
||
|
||
Запрос `SELECT * FROM FixedStringTable WHERE a = 'b'` не возвращает необходимых данных. Необходимо дополнить шаблон фильтра нулевыми байтами.
|
||
|
||
```sql
|
||
SELECT * FROM FixedStringTable
|
||
WHERE a = 'b\0'
|
||
```
|
||
```text
|
||
┌─a─┐
|
||
│ b │
|
||
└───┘
|
||
|
||
```
|
||
|
||
Это поведение отличается от поведения MySQL для типа `CHAR`, где строки дополняются пробелами, а пробелы перед выводом вырезаются.
|
||
|
||
Обратите внимание, что длина значения `FixedString(N)` постоянна. Функция [length](../query_language/functions/array_functions.md#array_functions-length) возвращает `N` даже если значение `FixedString(N)` заполнено только нулевыми байтами, однако функция [empty](../query_language/functions/string_functions.md#string_functions-empty) в этом же случае возвращает `1`.
|
||
|
||
[Оригинальная статья](https://clickhouse.yandex/docs/ru/data_types/fixedstring/) <!--hide-->
|