bitmap_subset_in_range
bitmap_subset_in_range
説明
start_rangeとend_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_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:範囲が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 |
+-------+