ClickHouse/docs/ru/query_language/functions/encoding_functions.md
2020-01-24 10:52:33 +03:00

4.4 KiB
Raw Blame History

Функции кодирования

hex

Возвращает строку, содержащую шестнадцатеричное представление аргумента.

Syntax

hex(arg)

Результат зависит от типа передаваемого аргумента. Используйте заглавные буквы A-F. Не используйте префиксы 0x и суффиксы h.

Для строк просто все байты кодируются в виде двух шестнадцатеричных цифр.

Числа преобразуются в человекочитаемый (big endian) формат. Для чисел вырезаются старшие нули, но только по целым байтам.

Например:

  • Date кодируется как число дней с начала Unix-эпохи.
  • DateTime кодируются как число секунд с начала Unix-эпохи.
  • Float и Decimal кодируются как их шестнадцатеричное представление в памяти.

Параметры

Влзвращаемое значение

  • Строковое шестнадцатеричное представление переданного аргумента.

Тип: String.

Пример

Запрос:

SELECT hex(toFloat32(number)) as hex_presentation FROM numbers(15, 2);

Ответ:

┌─hex_presentation─┐
│ 00007041         │
│ 00008041         │
└──────────────────┘

Запрос:

SELECT hex(toFloat64(number)) as hex_presentation FROM numbers(15, 2);

Ответ:

┌─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, содержащий степени двойки, в сумме дающих исходное число; числа в массиве идут по возрастанию.

Оригинальная статья