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

bitmap_subset_limit

Описание

Извлекает указанное количество элементов из значения BITMAP, начиная с элемента со значением start range. Выходные элементы являются подмножеством src.

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

Эта функция похожа на sub_bitmap. Разница в том, что данная функция извлекает элементы, начиная со значения элемента (start_range), тогда как sub_bitmap извлекает элементы, начиная со смещения.

Синтаксис

BITMAP bitmap_subset_limit(BITMAP src, BIGINT start_range, BIGINT limit)

Параметры

  • src: значение BITMAP, из которого нужно получить элементы.
  • start_range: начальный диапазон для извлечения элементов. Должно быть значением типа BIGINT. Если указанный начальный диапазон превышает максимальный элемент значения BITMAP и limit положительный, возвращается NULL. См. Пример 4.
  • limit: количество элементов для получения, начиная с start_range. Отрицательные лимиты отсчитываются справа налево. Если количество подходящих элементов меньше значения limit, возвращаются все подходящие элементы.

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

Возвращает значение типа BITMAP. Возвращается NULL, если любой из входных параметров недействителен.

Примечания по использованию

  • Подмножество элементов включает start range.
  • Отрицательные лимиты отсчитываются справа налево. См. пример 3.

Примеры

В следующих примерах входными данными для bitmap_subset_limit() является вывод bitmap_from_string. Например, bitmap_from_string('1,1,3,1,5,3,5,7,7,9') возвращает 1, 3, 5, 7, 9. bitmap_subset_limit() принимает это значение BITMAP в качестве входных данных.

Пример 1: Получить 4 элемента из значения BITMAP со значениями элементов, начиная с 1.

select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 1, 4)) value;
+---------+
| value |
+---------+
| 1,3,5,7 |
+---------+

Пример 2: Получить 100 элементов из значения BITMAP со значением элементов, начиная с 1. Лимит превышает длину значения BITMAP, и возвращаются все подходящие элементы.

select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 1, 100)) value;
+-----------+
| value |
+-----------+
| 1,3,5,7,9 |
+-----------+

Пример 3: Получить -2 элемента из значения BITMAP со значением элементов, начиная с 5 (отсчет справа налево).

select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('1,1,3,1,5,3,5,7,7,9'), 5, -2)) value;
+-----------+
| value |
+-----------+
| 3,5 |
+-----------+

Пример 4: Начальный диапазон 10 превышает максимальный элемент значения 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 |
+-------+