位图判断函数
位图判断函 数对输入的位图数据进行一些判断,并返回布尔值。seekdb 当前所支持的位图判断函数包括 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 (0.001 sec)
SELECT rb_is_empty(rb_from_string('1,2,3'));
+--------------------------------------+
| rb_is_empty(rb_from_string('1,2,3')) |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 row in set (0.001 sec)
rb_contains
rb_contains() 函数有两种用法:
- 用于判断输入的第一个位图数据(
rb1)是否完全包含输入的第二个位图数据(rb2)。 - 用于判断输入的位图数据是否包含特定的偏移(
offset)。
两种用法通过不同的语法来实现。具体说明如下。
用法一
rb_contains() 函数可用于判断输入的第一个位图数据(rb1)是否完全包含输入的第二个位图数据(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 (0.001 sec)
用法二
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 (0.001 sec)
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 (0.001 sec)