---
title: "位图运算函数 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 位图运算函数 位图运算函数提供了位图数据间基本运算。OceanBase 数据库当前所支持的位图运算函数包括 rb_and() 、 rb_or() 、 rb_xor() 、 rb_andnot() 、 rb_and_null2empty() 、 rb_or_null2empty() 和 rb_andnot_null2e…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# 位图运算函数

更新时间：2026-04-07 20:57:20

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/940.roaring-bitmap-functions-of-mysql-mode/400.roaring-bitmap-operation-functions-of-mysql-mode.md)  

位图运算函数提供了位图数据间基本运算。OceanBase 数据库当前所支持的位图运算函数包括 `rb_and()`、`rb_or()`、`rb_xor()`、`rb_andnot()`、`rb_and_null2empty()`、`rb_or_null2empty()` 和 `rb_andnot_null2empty()`。

## rb_and 和 rb_and_null2empty

`rb_and()` 函数计算两个位图数据的交集。语法如下：

```sql
rb_and(rb1, rb2)

```

参数 `rb1` 和 `rb2` 的顺序不影响结果。

示例如下：

```sql
SELECT rb_to_string(rb_and(rb_from_string('1,2,3'), rb_from_string('2,3,4')));
+------------------------------------------------------------------------+
| rb_to_string(rb_and(rb_from_string('1,2,3'), rb_from_string('2,3,4'))) |
+------------------------------------------------------------------------+
| 2,3                                                                    |
+------------------------------------------------------------------------+
1 row in set

```

```sql
SELECT rb_to_string(rb_and(rb_from_string('1,2,3'), NULL));
+-----------------------------------------------------+
| rb_to_string(rb_and(rb_from_string('1,2,3'), NULL)) |
+-----------------------------------------------------+
| NULL                                                |
+-----------------------------------------------------+
1 row in set

```

`rb_and_null2empty()` 函数计算逻辑与 `rb_and()` 一致，但把空输入视为空的位图数据。

```sql
SELECT rb_to_string(rb_and_null2empty(rb_from_string('1,2,3'), NULL));
+----------------------------------------------------------------+
| rb_to_string(rb_and_null2empty(rb_from_string('1,2,3'), NULL)) |
+----------------------------------------------------------------+
|                                                                |
+----------------------------------------------------------------+
1 row in set

```

## rb_or 和 rb_or_null2empty

`rb_or()` 函数计算两个位图数据的并集。语法如下：

```sql
rb_or(rb1, rb2)

```

示例如下：

```sql
SELECT rb_to_string(rb_or(rb_from_string('1,2,3'), rb_from_string('2,3,4')));
+-----------------------------------------------------------------------+
| rb_to_string(rb_or(rb_from_string('1,2,3'), rb_from_string('2,3,4'))) |
+-----------------------------------------------------------------------+
| 1,2,3,4                                                               |
+-----------------------------------------------------------------------+
1 row in set

```

`rb_or_null2empty()` 函数计算逻辑与 `rb_or()` 一致，但把空输入视为空的位图数据。

## rb_xor

`rb_xor()` 函数提供了两个位图数据的异或运算。语法如下：

```sql
rb_xor(rb1, rb2)

```

示例如下：

```sql
SELECT rb_to_string(rb_xor(rb_from_string('1,2,3'), rb_from_string('2,3,4')));
+------------------------------------------------------------------------+
| rb_to_string(rb_xor(rb_from_string('1,2,3'), rb_from_string('2,3,4'))) |
+------------------------------------------------------------------------+
| 1,4                                                                    |
+------------------------------------------------------------------------+
1 row in set

```

## rb_andnot 和 rb_andnot_null2empty

`rb_andnot()` 函数提供了两个位图数据的与非运算。语法如下：

```sql
rb_andnot(rb1, rb2)

```

该函数将以参数 `rb1` 为计算基础，计算其与 `rb2` 的差，即返回的位图数据值 = `rb1 - rb2`。

示例如下：

```sql
SELECT rb_to_string(rb_andnot(rb_from_string('1,2,3'), rb_from_string('2,3,4')));
+---------------------------------------------------------------------------+
| rb_to_string(rb_andnot(rb_from_string('1,2,3'), rb_from_string('2,3,4'))) |
+---------------------------------------------------------------------------+
| 1                                                                         |
+---------------------------------------------------------------------------+
1 row in set

```

`rb_andnot_null2empty()` 函数计算逻辑与 `rb_andnot()` 一致，但把空输入视为空的位图数据。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
