Последнее обновление
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]