ビットマップ判断関数は、入力されたビットマップデータに対していくつかの判断を行い、ブール値を返します。OceanBaseデータベースが現在サポートしているビットマップ判断関数には、rb_is_empty()とrb_contains()が含まれます。
rb_is_empty
rb_is_empty()関数は、入力されたビットマップデータが空かどうかを判断します。構文は以下のとおりです:
rb_is_empty(rb)
戻り値1空であることを示し、0空ではないことを示します。
例:
SELECT rb_is_empty(rb_from_string(''));
+---------------------------------+
| rb_is_empty(rb_from_string('')) |
+---------------------------------+
| 1 |
+---------------------------------+
1 row in set
SELECT rb_is_empty(rb_from_string('1,2,3'));
+--------------------------------------+
| rb_is_empty(rb_from_string('1,2,3')) |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 row in set
rb_contains
rb_contains()関数には2つの使い方があります:
- 入力された最初のビットマップデータ(
rb1)が、入力された2番目のビットマップデータ(rb2)を完全に含むかどうかを判断するために使用します。 - 入力されたビットマップデータに特定のオフセット(
offset)が含まれているかどうかを判断するために使用します。
2つの使い方は異なる構文で実現されます。具体的な説明は以下のとおりです。
使い方1
rb_contains()関数は、入力された最初のビットマップデータ(rb1)が、入力された2番目のビットマップデータ(rb2)を完全に含むかどうかを判断するために使用できます。構文は次のとおりです:
rb_contains(rb1, rb2)
具体的な説明は以下のとおりです:
- 入力パラメータ
rb1は計算の基礎となり、入力パラメータrb2は計算対象のビットマップデータであり、rb2の各要素がrb1に存在するかどうかを判断します。 - パラメータ
rb1とrb2の順序は結果に影響します。 - 返される結果
1は完全に含まれていることを表し、0は完全に含まれていないことを表します。
例:
SELECT rb_contains(rb_from_string('1,2,3,4,5'), rb_from_string('1,2,3,4'));
+---------------------------------------------------------------------+
| rb_contains(rb_from_string('1,2,3,4,5'), rb_from_string('1,2,3,4')) |
+---------------------------------------------------------------------+
| 1 |
+---------------------------------------------------------------------+
1 row in set
使い方2
rb_contains()関数は、入力されたビットマップデータに特定のオフセット(offset)が含まれているかどうかを判断するために使用できます。構文は次のとおりです:
rb_contains(rb, offset)
具体的な説明は以下のとおりです:
- 入力パラメータ
rbは計算の基礎となり、ビットマップデータです。 offsetは整数でなければならず、その整数がビットマップデータrbに存在するかどうかを判断するために使用されます。- 返される結果
1は含まれていることを表し、0は含まれていないことを表します。
例:
SELECT rb_contains(rb_from_string('1,2,3,4,5'), 1);
+---------------------------------------------+
| rb_contains(rb_from_string('1,2,3,4,5'), 1) |
+---------------------------------------------+
| 1 |
+---------------------------------------------+
1 row in set
SELECT rb_contains(rb_from_string('1,2,3,4,6'), 5);
+---------------------------------------------+
| rb_contains(rb_from_string('1,2,3,4,6'), 5) |
+---------------------------------------------+
| 0 |
+---------------------------------------------+
1 row in set