メインコンテンツまでスキップ

bitmap_subset_in_range

bitmap_subset_in_range

説明

start_rangeend_rangeの範囲内(排他的)でBitmap値から要素を抜き出します。出力される要素はBitmap値の部分集合です。

この関数は、ページネーションのクエリなどのシナリオで主に使用されます。 v3.1からサポートされています。

構文

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_rangestart_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:範囲が1から4の間のBITMAP値から部分集合を取得します。この範囲内の値は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:範囲が1から100の間のBITMAP値から部分集合を取得します。終了値が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:終了範囲の3が開始範囲の4よりも小さいため、NULLが返されます。

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がBITMAP値 1,3,5,7,9の最大長(5)を超えています。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 |
+-------+

参照