Перейти к основному содержимому
Версия: 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