Перейти к основному содержимому
Версия: 2.0.x

bitmap_subset_in_range

Извлекает элементы из значения Bitmap в диапазоне от start_range до end_range (не включая конечное значение). Выходные элементы являются подмножеством значения Bitmap.

Эта функция в основном используется для таких сценариев, как постраничные запросы. Поддерживается начиная с версии v1.5.2.

Синтаксис

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