bitmap_subset_in_range
Описание
Извлекает элементы из значения Bitmap в диапазоне от start_range до end_range (исключительно). Выходные элементы представляют собой подмножество значения Bitmap.
Эта функция в основном используется для сценариев, таких как запросы с разбивкой на страницы. Поддерживается начиная с версии 1.5.0.
Синтаксис
BITMAP bitmap_subset_in_range(BITMAP src, BIGINT start_range, BIGINT end_range)
Параметры
src: значение Bitmap, из которого нужно получить элементы.start_range: начальный диапазон для извлечения элементов. Должно быть значением BIGINT. Если указанный начальный диапазон превышает максимальную длину значения BITMAP, возвращается NULL. См. Пример 4.end_range: конечный диапазон для извлечения элементов. Должно быть значением BIGINT. Еслиend_rangeравен или меньшеstart range, возвращается NULL. См. Пример 3.
Возвращаемое значение
Возвращает значение типа BITMAP. NULL возвращается, если любой из входных параметров недействителен.
Примечания по использованию
Элементы подмножества включают start_range, но исключают end_range. См. Пример 5.
Примеры
В следующих примерах входные данные bitmap_subset_in_range() являются выходными данными bitmap_from_string. Например, bitmap_from_string('1,1,3,1,5,3,5,7,7,9') возвращает 1, 3, 5, 7, 9. bitmap_subset_in_range() принимает это значение BITMAP в качестве входных данных.
Пример 1: Получение элементов подмножества из значения BITMAP со значениями элементов в диапазоне от 1 до 4. Значения в этом диапазоне: 1 и 3.
select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 1, 4)) value;
+-------+
| value |
+-------+
| 1,3 |
+-------+
Пример 2: Получение элементов подмножества из значения BITMAP со значениями элементов в диапазоне от 1 до 100. Конечное значение превышает максимальную длину значения BITMAP, и возвращаются все соответствующие элементы.
select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 0, 100)) value;
+-----------+
| value |
+-----------+
| 1,3,5,7,9 |
+-----------+
Пример 3: Возвращается NULL, поскольку конечный диапазон 3 меньше начального диапазона 4.
select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 4, 3)) value;
+-------+
| value |
+-------+
| NULL |
+-------+
Пример 4: Начальный диапазон 10 превышает максимальную длину (5) значения BITMAP 1,3,5,7,9. Возвращается NULL.
select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 10, 15)) value;
+-------+
| value |
+-------+
| NULL |
+-------+
Пример 5: Возвращаемое подмножество включает начальное значение 1, но исключает конечное значение 3.
select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,1,3,1,5,4,5,6,7,9'), 1, 3)) value;
+-------+
| value |
+-------+
| 1 |
+-------+