---
title: "位图聚合函数 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 位图聚合函数 位图聚合函数提供了将数值类型聚合为位图类型，即位图数据间的聚合运算。OceanBase 数据库当前所支持的位图聚合函数包括 rb_build_agg() 、 rb_or_agg() 和 rb_and_agg() 。 rb_build_agg rb_build_agg() 函数将数值列聚合为位图数据。语法…
---
切换语言

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

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

# 位图聚合函数

更新时间：2026-04-06 10:40:15

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/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/700.roaring-bitmap-aggregate-functions-of-mysql-mode.md)  

位图聚合函数提供了将数值类型聚合为位图类型，即位图数据间的聚合运算。OceanBase 数据库当前所支持的位图聚合函数包括 `rb_build_agg()`、`rb_or_agg()`和`rb_and_agg()` 。

## rb_build_agg

`rb_build_agg()` 函数将数值列聚合为位图数据。语法如下：

```sql
rb_build_agg(values)

```

输入参数 `values`（UINT64）是构建聚合位图数据的数值列。Oceanbase 支持的合法的值范围是 `[0, UINT64_MAX]`。但是为了兼容 PG，也支持 `[INT32_MIN,0)` 范围的负整数的输入，在输出时负整数会转换为 UINT32 的值输出，比如输入 `-1`，输出是 `4294967295`。

该函数目前只支持输入整数类型，不支持输入非整数类型，否则会报错。如果是字符串类型，可以转换为整数类型后输入。

示例如下：

```sql
CREATE TABLE t1(val bigint);
INSERT INTO t1 VALUES(1),(2),(3);
SELECT rb_to_string(rb_build_agg(val)) FROM t1;
+---------------------------------+
| rb_to_string(rb_build_agg(val)) |
+---------------------------------+
| 1,2,3                           |
+---------------------------------+
1 row in set

```

## rb_or_agg

`rb_or_agg()` 函数将位图列的多行数据进行或运算，并聚合为位图数据。语法如下：

```sql
rb_or_agg(rb_in)

```

输入参数 `rb_in` 是要进行聚合运算的位图列。

示例如下：

```sql
CREATE TABLE t2(rb roaringbitmap);
INSERT INTO t2 VALUES (rb_from_string('1,2,3')),(rb_from_string('2,3,4'));
SELECT rb_to_string(rb_or_agg(rb)) FROM t2;
+-----------------------------+
| rb_to_string(rb_or_agg(rb)) |
+-----------------------------+
| 1,2,3,4                     |
+-----------------------------+
1 row in set

```

## rb_and_agg

`rb_and_agg()` 函数将位图列的多行数据进行与运算，并聚合为位图数据。语法如下：

```sql
rb_and_agg(rb_in)

```

示例如下：

```sql
SELECT rb_to_string(rb_and_agg(rb)) FROM t2;
+------------------------------+
| rb_to_string(rb_and_agg(rb)) |
+------------------------------+
| 2,3                          |
+------------------------------+
1 row in set

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
