跳到主要内容

位图判断函数

位图判断函数对输入的位图数据进行一些判断,并返回布尔值。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 中。
  • 参数 rb1rb2 的顺序会影响结果。
  • 返回结果 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)