mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-08 09:30:48 +00:00
84 lines
4.4 KiB
Markdown
84 lines
4.4 KiB
Markdown
# Функции кодирования
|
||
|
||
## hex {#hex}
|
||
|
||
Возвращает строку, содержащую шестнадцатеричное представление аргумента.
|
||
|
||
**Syntax**
|
||
|
||
```sql
|
||
hex(arg)
|
||
```
|
||
|
||
Результат зависит от типа передаваемого аргумента. Используйте заглавные буквы `A-F`. Не используйте префиксы `0x` и суффиксы `h`.
|
||
|
||
Для строк просто все байты кодируются в виде двух шестнадцатеричных цифр.
|
||
|
||
Числа преобразуются в человекочитаемый (big endian) формат. Для чисел вырезаются старшие нули, но только по целым байтам.
|
||
|
||
Например:
|
||
|
||
- `Date` кодируется как число дней с начала Unix-эпохи.
|
||
- `DateTime` кодируются как число секунд с начала Unix-эпохи.
|
||
- `Float` и `Decimal` кодируются как их шестнадцатеричное представление в памяти.
|
||
|
||
**Параметры**
|
||
|
||
- `arg` — Значение для преобразования в шестнадцатеричное. Типы: [String](../../data_types/string.md), [UInt](../../data_types/int_uint.md), [Float](../../data_types/float.md), [Decimal](../../data_types/decimal.md), [Date](../../data_types/date.md) or [DateTime](../../data_types/datetime.md).
|
||
|
||
**Влзвращаемое значение**
|
||
|
||
- Строковое шестнадцатеричное представление переданного аргумента.
|
||
|
||
Тип: `String`.
|
||
|
||
**Пример**
|
||
|
||
Запрос:
|
||
|
||
```sql
|
||
SELECT hex(toFloat32(number)) as hex_presentation FROM numbers(15, 2);
|
||
```
|
||
|
||
Ответ:
|
||
|
||
```text
|
||
┌─hex_presentation─┐
|
||
│ 00007041 │
|
||
│ 00008041 │
|
||
└──────────────────┘
|
||
```
|
||
|
||
Запрос:
|
||
|
||
```sql
|
||
SELECT hex(toFloat64(number)) as hex_presentation FROM numbers(15, 2);
|
||
```
|
||
|
||
Ответ:
|
||
|
||
```text
|
||
┌─hex_presentation─┐
|
||
│ 0000000000002E40 │
|
||
│ 0000000000003040 │
|
||
└──────────────────┘
|
||
```
|
||
|
||
## unhex(str)
|
||
Принимает строку, содержащую произвольное количество шестнадцатеричных цифр, и возвращает строку, содержащую соответствующие байты. Поддерживаются как строчные, так и заглавные буквы A-F. Число шестнадцатеричных цифр не обязано быть чётным. Если оно нечётное - последняя цифра интерпретируется как младшая половинка байта 00-0F. Если строка-аргумент содержит что-либо кроме шестнадцатеричных цифр, то будет возвращён какой-либо implementation-defined результат (не кидается исключение).
|
||
Если вы хотите преобразовать результат в число, то вы можете использовать функции reverse и reinterpretAsType.
|
||
|
||
## UUIDStringToNum(str)
|
||
Принимает строку, содержащую 36 символов в формате `123e4567-e89b-12d3-a456-426655440000`, и возвращает в виде набора байт в FixedString(16).
|
||
|
||
## UUIDNumToString(str)
|
||
Принимает значение типа FixedString(16). Возвращает строку из 36 символов в текстовом виде.
|
||
|
||
## bitmaskToList(num)
|
||
Принимает целое число. Возвращает строку, содержащую список степеней двойки, в сумме дающих исходное число; по возрастанию, в текстовом виде, через запятую, без пробелов.
|
||
|
||
## bitmaskToArray(num)
|
||
Принимает целое число. Возвращает массив чисел типа UInt64, содержащий степени двойки, в сумме дающих исходное число; числа в массиве идут по возрастанию.
|
||
|
||
[Оригинальная статья](https://clickhouse.yandex/docs/ru/query_language/functions/encoding_functions/) <!--hide-->
|