Битовые функции

Битовые функции работают для любой пары типов из UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64.

Тип результата — целое число, битность которого равна максимальной битности аргументов. Если хотя бы один аргумент знаковый, то результат — знаковое число. Если аргумент — число с плавающей запятой, оно приводится к Int64.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL.

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

Битовые функции
Функция Описание

bitAnd(a, b)

Выполняет побитовую операцию "И" (AND) над двумя числами a и b. Тип результата совпадает с типом входных значений.

bitCount(a)

Вычисляет количество единичных битов (равных 1) в двоичном представлении числа a. Тип результата — UInt8.

bitHammingDistance(a, b)

Возвращает расстояние Хэмминга — количество несовпадающих битов между битовыми представлениями двух чисел a и b. Тип результата — UInt8. Может использоваться с функциями SimHash для поиска частично дублирующихся строк: чем меньше расстояние, тем выше сходство строк.

bitNot(a)

Выполняет побитовую операцию "НЕ" (NOT) над числом a, инвертируя каждый бит. Тип результата совпадает с типом входного значения.

bitOr(a, b)

Выполняет побитовую операцию "ИЛИ" (OR) над двумя числами a и b. Тип результата совпадает с типом входных значений.

bitRotateLeft(a, N)

Циклически сдвигает биты двоичного представления числа a на N бит влево. Биты, вышедшие за границу слева, появляются справа. Тип результата совпадает с типом значения для сдвига.

bitRotateRight(a, N)

Циклически сдвигает биты двоичного представления числа a на N бит вправо. Биты, вышедшие за границу справа, появляются слева. Тип результата совпадает с типом значения для сдвига.

bitShiftLeft(a, N)

Сдвигает двоичное представление числа a на N бит влево. Поддерживаются числа и строки. Тип результата совпадает с типом сдвигаемого значения. FixedString или String рассматривается как одно многобайтовое значение. При сдвиге за пределы биты FixedString теряются, тогда как String расширяется дополнительными байтами без потери бит.

bitShiftRight(a, N)

Сдвигает двоичное представление числа a на N бит вправо. Поддерживаются числа и строки. Тип результата совпадает с типом сдвигаемого значения. FixedString или String рассматривается как одно многобайтовое значение. При сдвиге за пределы биты FixedString теряются, тогда как String расширяется дополнительными байтами без потери бит.

bitSlice(s, offset[, length])

Возвращает подстроку битов из строки s типа String или FixedString. Параметр offset — начальная позиция бита, индексация начинается с 1, отрицательные значения означают отсчет с конца строки. Параметр length — количество извлекаемых битов, отрицательные значения означают извлечение от offset до (string_length - abs(length)); если параметр не задан, извлекаются биты от offset до конца строки. Результат всегда дополняется нулями справа до границ байта.

bitTest(a, index)

Возвращает значение бита на позиции index в двоичном представлении целого числа a. Подсчет битов ведется справа налево, начиная с 0. Тип результата совпадает с типом входного значения.

bitTestAll(a, index1[, index2, …​ , indexN])

Вычисляет результат логической конъюнкции (AND) всех битов двоичного представления целого числа a на указанных позициях index1, …​, indexN (одна или несколько позиций битов, которые нужно проверить). Подсчет битов ведется справа налево, начиная с 0. Возвращает 1, если все указанные биты равны 1, иначе — 0.

bitTestAny(a, index1[, index2, …​ , indexN])

Вычисляет результат логической дизъюнкции (OR) всех битов двоичного представления целого числа a на указанных позициях index1, …​, indexN (одна или несколько позиций битов, которые нужно проверить). Подсчет битов ведется справа налево, начиная с 0. Возвращает 1, если хотя бы один из указанных битов равен 1, иначе — 0.

bitXor(a, b)

Выполняет побитовую операцию исключающего "ИЛИ" (XOR) над двумя числами a и b. Тип результата совпадает с типом входных значений.

Была ли полезна эта страница?

Обратная связь