---
title: "位图输出函数 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 位图输出函数 位图输出函数用于选择位图数据输出形式，如以字符串的形式依次输出位图数据的每一个元素，并以逗号隔开。OceanBase 数据库当前所支持的位图输出函数包括 rb_to_varbinary() 、 rb_to_string() 和 rb_to_array() 。 rb_to_varbinary rb_to_…
---
切换语言

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

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

# 位图输出函数

更新时间：2026-03-01 17:28:42

[编辑](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/600.roaring-bitmap-output-functions-of-mysql-mode.md)  

位图输出函数用于选择位图数据输出形式，如以字符串的形式依次输出位图数据的每一个元素，并以逗号隔开。OceanBase 数据库当前所支持的位图输出函数包括 `rb_to_varbinary()`、`rb_to_string()` 和 `rb_to_array()`。

## rb_to_varbinary

`rb_to_varbinary()` 函数用于以 varbinary 的形式输出位图数据。语法如下：

```sql
rb_to_varbinary(rb, [format])

```

`format` 参数可选，如需配置当前仅支持 `roaring`。配置后，输出的二进制数据类型只有 BITMAP_32 和 BITMAP_64 两种兼容格式。如果不配置 `format`，则默认输出格式为 OceanBase 类型的 `varbinary` 格式（包含 BITMAP_32 和 BITMAP_6 在内的 7 种子类型）。

示例如下：

```sql
SELECT rb_to_varbinary((1,2,3));
+------------------------------------------------------------------------------------+
| rb_to_varbinary(rb_from_string('1,2,3'))                                           |
+------------------------------------------------------------------------------------+
| 0x010303010000000200000003000000                                                   |
+------------------------------------------------------------------------------------+
1 row in set

```

```sql
SELECT rb_to_varbinary((1,2,3),'roaring');
+----------------------------------------------------------------------------------------------------------+
| rb_to_varbinary(rb_from_string('1,2,3'), 'roaring')                                                      |
+----------------------------------------------------------------------------------------------------------+
| 0x01053A300000010000000000020010000000010002000300                                                       |
+----------------------------------------------------------------------------------------------------------+
1 row in set

```

## rb_to_string

`rb_to_string()` 函数以字符串的形式依次输出位图数据的每一个元素，并以逗号隔开。其中元素的输出格式为 UINT64，输出的最大元素个数为 1000000。语法如下：

```sql
rb_to_string(rb)

```

示例如下：

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

```

```sql
SELECT rb_to_string(x'010101000000');
+-------------------------------+
| rb_to_string(x'010101000000') |
+-------------------------------+
| 1                             |
+-------------------------------+
1 row in set

```

## rb_iterate

`rb_iterate()` 函数将位图数据的值展开为一列多行。该函数可以在 `SELECT` 后使用，也可以在 `FROM` 后使用：

- 在 `SELECT` 后使用时，若用了多个 `rb_iterate()` 函数，将会返回多列，列名默认为 `rb_iterate`。返回的行数为最大行数，较少的列以 `NULL` 值来填充多余的行。
 - 在 `FROM` 后使用时，若用了多个 `rb_iterate()` 函数，则相当于依次对返回的表做 `JOIN` 操作，返回行数为笛卡尔积。语法如下：

```sql
table = rb_iterate(rb) [AS] [alias]

```

参数说明如下：

| **参数** | **数据类型** | **默认值** | **描述** | **必选** |
| --- | --- | --- | --- | --- |
| rb | RoaringBitmap |  | 需要进行输出的位图数据。 | 是 |
| alia | String | rb_iterate | 别名。可以加 AS 关键词也可以不加。 | 否 |

返回值为一个 uint64 类型的一列多行的表。

示例如下：

```sql
SELECT rb_iterate(rb_from_string('1,2,3'));
+------------+
| rb_iterate |
+------------+
|          1 |
|          2 |
|          3 |
+------------+
3 rows in set

```

在 `FROM` 后使用多个 `rb_iterate()` 函数，示例如下：

```sql
SELECT * FROM rb_iterate(rb_from_string('1,2,3')) AS t1, rb_iterate(rb_from_string('11,22')) AS t2;
+------+------+
| t1   | t2   |
+------+------+
|    1 |   11 |
|    1 |   22 |
|    2 |   11 |
|    2 |   22 |
|    3 |   11 |
|    3 |   22 |
+------+------+
6 rows in set

```

`SELECT` 后使用多个 `rb_iterate()` 函数会返回多列，示例如下：

```sql
SELECT rb_iterate(rb_from_string('1,2,3')), rb_iterate(rb_from_string('11,22'));
+------------+------------+
| rb_iterate | rb_iterate |
+------------+------------+
|          1 |         11 |
|          2 |         22 |
|          3 |       NULL |
+------------+------------+
3 rows in set

```

```sql
CREATE TABLE t1 (id int, rb roaringbitmap, rb2 roaringbitmap);
INSERT INTO t1 VALUES (1, rb_from_string('1,2,3'), rb_from_string('33,44')),(2, rb_from_string('3,4'), rb_from_string('44,55,66'));
SELECT rb_iterate(rb) FROM t1;
+------------+
| rb_iterate |
+------------+
|          1 |
|          2 |
|          3 |
|          3 |
|          4 |
+------------+
5 rows in set

```

## rb_to_array

`rb_to_array()` 函数用于以数组的形式输出位图数据。语法如下：

```sql
rb_to_array(rb)

```

该函数输入参数为一个位图数据。

返回值为一个有序数组。

示例如下：

```sql
SELECT rb_to_array(rb_from_string('0,1,2,3,4,5,6,7,8,9,123789,68719476736'));
+-----------------------------------------------------------------------+
| rb_to_array(rb_from_string('0,1,2,3,4,5,6,7,8,9,123789,68719476736')) |
+-----------------------------------------------------------------------+
| [0,1,2,3,4,5,6,7,8,9,123789,68719476736]                              |
+-----------------------------------------------------------------------+
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) 咨询热线
