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

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 |
+-------+

Ссылки

bitmap_subset_limit