Кодировочные функции
bech32Decode
Введено в: v25.6
Декодирует строку адреса Bech32, сгенерированную алгоритмами bech32 или bech32m.
В отличие от функции encode, Bech32Decode
автоматически обрабатывает дополненные FixedStrings.
Синтаксис
Аргументы
address
— Строка Bech32 для декодирования.String
илиFixedString
Возвращаемое значение
Возвращает кортеж, состоящий из (hrp, data)
, который использовался для кодирования строки. Данные находятся в двоичном формате. Tuple(String, String)
Примеры
Декодирование адреса
Адрес тестовых сетей
bech32Encode
Введено в: v25.6
Кодирует двоичную строку данных вместе с частью, удобной для чтения (HRP), используя алгоритмы Bech32 или Bech32m.
При использовании типа данных FixedString
значение, если оно не заполняет полностью строку, дополняется нулевыми символами.
Хотя функция bech32Encode
автоматически обрабатывает это для аргумента hrp, для аргумента data значения не должны быть дополнены.
По этой причине не рекомендуется использовать тип данных FixedString
для ваших значений данных, если вы не уверены, что они все одной длины и что ваша колонка FixedString
также установлена на эту длину.
Синтаксис
Аргументы
hrp
— Строка из1 - 83
строчных символов, указывающая "человеко-читаемую часть" кода. Обычно 'bc' или 'tb'.String
илиFixedString
data
— Строка двоичных данных для кодирования.String
илиFixedString
witver
— Необязательный. Версия свидетеля (по умолчанию = 1).UInt*
, указывающий версию алгоритма для выполнения.0
для Bech32 и1
или больше для Bech32m.UInt*
Возвращаемое значение
Возвращает строку адреса Bech32, состоящую из человеко-читаемой части, разделительного символа, который всегда '1', и части данных. Длина строки никогда не превышает 90 символов. Если алгоритм не может сгенерировать допустимый адрес из входных данных, он вернет пустую строку. String
Примеры
Стандартный Bech32m
Алгоритм Bech32
Пользовательский HRP
bin
Введено в: v21.8
Возвращает строку, содержащую двоичное представление аргумента в соответствии со следующей логикой для разных типов:
Тип | Описание |
---|---|
(U)Int* | Печатает двоичные цифры от наиболее значимого к наименее значимому (большой порядок или "человеко-читаемый" порядок). Начинает с наиболее значимого ненулевого байта (ведущие нулевые байты опускаются), но всегда печатает восемь цифр каждого байта, если ведущая цифра равна нулю. |
Date и DateTime | Форматируется как соответствующие целые числа (количество дней с начала эпохи для Date и значение unix временной метки для DateTime). |
String и FixedString | Все байты просто кодируются как восемь двоичных чисел. Нулевые байты не опускаются. |
Float* и Decimal | Кодируется как их представление в памяти. Поскольку мы поддерживаем архитектуру с младшим порядком, они кодируются в младшем порядке. Ведущие/окончательные нулевые байты не опускаются. |
UUID | Кодируется как строка в порядке большого порядка. |
Синтаксис
Аргументы
arg
— Значение для преобразования в двоичное.String
илиFixedString
или(U)Int*
илиFloat*
илиDecimal
илиDate
илиDateTime
Возвращаемое значение
Возвращает строку с двоичным представлением аргумента. String
Примеры
Простой целое число
Float32 числа
Float64 числа
Преобразование UUID
bitPositionsToArray
Введено в: v21.7
Эта функция возвращает позиции (в порядке возрастания) единичных битов в двоичном представлении без знакового целого числа. Значения входных знаковых целых чисел сначала преобразуются в беззнаковые целые числа.
Синтаксис
Аргументы
arg
— Целочисленное значение.(U)Int*
Возвращаемое значение
Возвращает массив с упорядоченными по возрастанию позициями единичных битов в двоичном представлении входного значения. Array(UInt64)
Примеры
Один установленный бит
Все биты установлены
bitmaskToArray
Введено в: v1.1
Эта функция разлагает целое число на сумму степеней двойки. Степени двойки возвращаются в виде массива, отсортированного по возрастанию.
Синтаксис
Аргументы
num
— Целочисленное значение.(U)Int*
Возвращаемое значение
Возвращает массив с отсортированными по возрастанию степенями двойки, которые в сумме дают входное число. Array(UInt64)
Примеры
Основной пример
Одна степень двойки
bitmaskToList
Введено в: v1.1
Как bitmaskToArray, но возвращает степени двойки в виде строки, разделенной запятыми.
Синтаксис
Аргументы
num
— Целочисленное значение.(U)Int*
Возвращаемое значение
Возвращает строку, содержащую степени двойки, разделенные запятыми. String
Примеры
Основной пример
char
Введено в: v20.1
Возвращает строку длиной, равной количеству переданных аргументов, где каждый байт имеет значение соответствующего аргумента. Принимает несколько аргументов числовых типов.
Если значение аргумента выходит за пределы типа данных UInt8
, то оно преобразуется
в UInt8
с возможным округлением и переполнением.
Синтаксис
Аргументы
num1[, num2[, num3 ...]]
— Числовые аргументы, интерпретируемые как целые числа.(U)Int8/16/32/64
илиFloat*
Возвращаемое значение
Возвращает строку данных байтов. String
Примеры
Основной пример
Создание произвольных кодировок
hex
Введено в: v1.1
Возвращает строку, содержащую шестнадцатеричное представление аргумента в соответствии со следующей логикой для разных типов:
Тип | Описание |
---|---|
(U)Int* | Печатает шестнадцатеричные цифры ("нibbles") от наиболее значимого к наименее значимому (большой порядок или "человеко-читаемый" порядок). Начинает с наиболее значимого ненулевого байта (ведущие нулевые байты опускаются), но всегда печатает обе цифры каждого байта, даже если ведущая цифра равна нулю. |
Date и DateTime | Форматируется как соответствующие целые числа (количество дней с начала эпохи для Date и значение unix временной метки для DateTime). |
String и FixedString | Все байты просто кодируются как два шестнадцатеричных числа. Нулевые байты не опускаются. |
Float* и Decimal | Кодируется как их представление в памяти. ClickHouse представляет значения внутри всегда как младший порядок, поэтому они кодируются соответствующим образом. Ведущие/окончательные нулевые байты не опускаются. |
UUID | Кодируется как строка в порядке большого порядка. |
Функция использует заглавные буквы A-F
и не использует никаких префиксов (как 0x
) или суффиксов (как h
).
Синтаксис
Аргументы
arg
— Значение для преобразования в шестнадцатеричное.String
или(U)Int*
илиFloat*
илиDecimal
илиDate
илиDateTime
Возвращаемое значение
Возвращает строку с шестнадцатеричным представлением аргумента. String
Примеры
Простой целое число
Float32 числа
Float64 числа
Преобразование UUID
hilbertDecode
Введено в: v24.6
Декодирует индекс кривой Хилберта обратно в кортеж беззнаковых целых чисел, представляющих координаты в многомерном пространстве.
Как и функция hilbertEncode
, эта функция имеет два режима работы:
- Простой
- Расширенный
Простой режим
Принимает до 2 беззнаковых целых чисел в качестве аргументов и выдает код UInt64
.
Расширенный режим
Принимает маску диапазона (кортеж) в качестве первого аргумента и до 2 беззнаковых целых чисел в качестве других аргументов. Каждое число в маске настраивает количество бит, на которые соответствующий аргумент будет сдвинут влево, фактически масштабируя аргумент в пределах его диапазона.
Расширение диапазона может быть полезным, когда вам нужна похожая распределенность для
аргументов с сильно различными диапазонами (или кардинальностью) Например: 'IP Address' (0...FFFFFFFF)
и 'Country code' (0...FF)
. Как и в функции кодирования, это ограничено 8
числами максимум.
Синтаксис
Аргументы
tuple_size
— Целое значение не более2
.UInt8/16/32/64
илиTuple(UInt8/16/32/64)
code
— КодUInt64
.UInt64
Возвращаемое значение
Возвращает кортеж указанного размера. Tuple(UInt64)
Примеры
Простой режим
Один аргумент
Расширенный режим
Использование колонки
hilbertEncode
Введено в: v24.6
Вычисляет код для кривой Хилберта для списка беззнаковых целых чисел.
Функция имеет два режима работы:
- Простой
- Расширенный
Простой режим
Принимает до 2 беззнаковых целых чисел в качестве аргументов и выдает код UInt64.
Расширенный режим
Принимает маску диапазона (Tuple) в качестве первого аргумента и до 2 беззнаковых целых чисел в качестве других аргументов.
Каждое число в маске настраивает количество бит, на которые соответствующий аргумент будет сдвинут влево, фактически масштабируя аргумент в пределах его диапазона.
Синтаксис
Аргументы
args
— До двух значений или колонок типа UInt.UInt8/16/32/64
range_mask
— Для расширенного режима, до двух значений или колонок типа UInt.UInt8/16/32/64
Возвращаемое значение
Возвращает код UInt64
. UInt64
Примеры
Простой режим
Расширенный режим
Один аргумент
Расширенный один аргумент
Использование колонки
mortonDecode
Введено в: v24.6
Декодирует код Мортона (ZCurve) в соответствующий кортеж беззнаковых целых чисел.
Как и функция mortonEncode
, эта функция имеет два режима работы:
- Простой
- Расширенный
Простой режим
Принимает размер результата кортежа в качестве первого аргумента и код в качестве второго аргумента.
Расширенный режим
Принимает маску диапазона (кортеж) в качестве первого аргумента и код в качестве второго аргумента. Каждое число в маске настраивает величину уменьшения диапазона:
1
- без уменьшения2
- уменьшение в 2 раза3
- уменьшение в 3 раза ⋮- Уменьшение до 8 раз.
Расширение диапазона может быть полезным, когда нужно получить похожую распределенность для
аргументов с сильно различными диапазонами (или кардинальностью). Например: 'IP Address' (0...FFFFFFFF)
и 'Country code' (0...FF)
. Как и в функции кодирования, это ограничено
максимум 8 числами.
Синтаксис
Аргументы
tuple_size
— Целое значение не более 8.UInt8/16/32/64
range_mask
— Для расширенного режима, маска для каждого аргумента. Маска является кортежем беззнаковых целых чисел. Каждое число в маске настраивает величину уменьшения диапазона.Tuple(UInt8/16/32/64)
code
— Код UInt64.UInt64
Возвращаемое значение
Возвращает кортеж указанного размера. Tuple(UInt64)
Примеры
Простой режим
Один аргумент
Расширенный режим, уменьшение одного аргумента
Использование колонки
mortonEncode
Введено в: v24.6
Вычисляет кодировку Мортона (ZCurve) для списка беззнаковых целых чисел.
Функция имеет два режима работы:
- Простой
- Расширенный
Простой режим
Принимает до 8 беззнаковых целых чисел в качестве аргументов и выдает код UInt64
.
Расширенный режим
Принимает маску диапазона (Tuple) в качестве первого аргумента и до 8 беззнаковых целых чисел в качестве других аргументов.
Каждое число в маске настраивает величину расширения диапазона:
- 1 - без расширения
- 2 - расширение в 2 раза
- 3 - расширение в 3 раза ⋮
- Увеличение до 8 раз.
Синтаксис
Аргументы
args
— До 8 беззнаковых целых чисел или колонок указанного типа.UInt8/16/32/64
range_mask
— Для расширенного режима, маска для каждого аргумента. Маска является кортежем беззнаковых целых чисел от1
до8
. Каждое число в маске настраивает величину уменьшения диапазона.Tuple(UInt8/16/32/64)
Возвращаемое значение
Возвращает код UInt64
. UInt64
Примеры
Простой режим
Расширенный режим
Один аргумент
Расширенный один аргумент
Использование колонки
sqidDecode
Введено в: v24.1
Преобразует sqid обратно в массив чисел.
Синтаксис
Аргументы
sqid
— sqid для декодирования.String
Возвращаемое значение
Возвращает массив чисел из sqid
. Array(UInt64)
Примеры
Пример использования
sqidEncode
Введено в: v24.1
Преобразует числа в sqid, строку идентификатора, похожую на Youtube.
Синтаксис
Аргументы
n1[, n2, ...]
— Произвольное количество чисел.UInt8/16/32/64
Возвращаемое значение
Возвращает хеш ID String
Примеры
Пример использования
unbin
Введено в: v21.8
Интерпретирует каждую пару двоичных цифр (в аргументе) как число и преобразует его в байт, представленный этим числом. Функция выполняет обратное действие к bin.
Для числового аргумента unbin()
не возвращает обратную функцию bin()
. Если вы хотите преобразовать результат в число, вы можете использовать функции обратного и reinterpretAs<Type>
.
Если unbin
вызывается изнутри clickhouse-client
, двоичные строки отображаются с использованием UTF-8.
Поддерживает двоичные цифры 0
и 1
. Число двоичных цифр не обязательно должно быть кратным восьми. Если строка аргумента содержит что-то иное, чем двоичные цифры, результат неопределен (исключение не выбрасывается).
Синтаксис
Аргументы
arg
— Строка, содержащая любое количество двоичных цифр.String
Возвращаемое значение
Возвращает бинарную строку (BLOB). String
Примеры
Основное использование
Преобразовать в число
unhex
Введено в: v1.1
Выполняет обратное действие функции hex
. Интерпретирует каждую пару шестнадцатеричных цифр (в аргументе) как число и преобразует
его в байт, представленный этим числом. Возвращаемое значение является бинарной строкой (BLOB).
Если вы хотите преобразовать результат в число, вы можете использовать функции обратного и reinterpretAs<Type>
.
clickhouse-client
интерпретирует строки как UTF-8.
Это может вызвать неожиданное отображение значений, возвращаемых функцией hex
.
Поддерживает как заглавные, так и строчные буквы A-F
.
Число шестнадцатеричных цифр не обязательно должно быть четным.
Если оно нечетное, последняя цифра интерпретируется как наименее значимая половина байта 00-0F
.
Если строка аргумента содержит что-то, кроме шестнадцатеричных цифр, возвращается некоторый результат, определяемый реализацией (исключение не выбрасывается).
Для числового аргумента функция unhex()
не возвращает обратное значение от hex(N).
Синтаксис
Аргументы
arg
— Строка, содержащая любое количество шестнадцатеричных цифр.String
илиFixedString
Возвращаемое значение
Возвращает бинарную строку (BLOB). String
Примеры
Основное использование
Преобразовать в число