Перейти к содержимому
Последнее обновление

HAMMING_DISTANCE

Описание​

Вычисляет расстояние Хэмминга между двумя байтовыми векторами: количество различающихся битов после побитовой операции XOR. Массивы со значением NULL и элементы со значением NULL вызывают ошибку.

Доступна в сборках Doris 4.2, в которые включена эта функция. Всегда выполняет точное скалярное вычисление; автоматической замены на поиск ANN не происходит.

Синтаксис​

HAMMING_DISTANCE(<array1>, <array2>)

Параметры​

ПараметрОписание
<array1>Массив целых чисел типа TINYINT, SMALLINT, INT или BIGINT, приводимый к ARRAY. Каждый элемент должен находиться в диапазоне [0,255]; массивы чисел с плавающей точкой, десятичных чисел и чисел типа LARGEINT не допускаются.
<array2>Массив целых чисел типа TINYINT, SMALLINT, INT или BIGINT, приводимый к ARRAY. Каждый элемент должен находиться в диапазоне [0,255]; массивы чисел с плавающей точкой, десятичных чисел и чисел типа LARGEINT не допускаются. Оба массива должны иметь одинаковую длину.

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

Возвращает значение типа FLOAT: чем оно меньше, тем ближе векторы. Для двух пустых массивов возвращается 0; максимальное расстояние между векторами длиной N байт составляет 8N. Если длины массивов различаются, массивы имеют значение NULL или содержат элементы со значением NULL, функция выдаёт ошибку, а не возвращает NULL. Элементы вне допустимого диапазона также вызывают ошибку.

Пример​

SELECT HAMMING_DISTANCE([0,255,170], [255,0,85]) AS value;
value
24
SELECT HAMMING_DISTANCE([], []) AS value;
value
0
SELECT HAMMING_DISTANCE(NULL, [0,1]);
ERROR: First argument for function hamming_distance cannot be null
SELECT HAMMING_DISTANCE([0,NULL], [0,1]);
ERROR: First argument for function hamming_distance cannot have null
SELECT HAMMING_DISTANCE([256], [0]);
ERROR: Hamming vector elements must be integers in [0, 255]