---
title: "数组构造函数 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: "数组构造函数 数组构造函数用于构建新的数组数据类型。OceanBase 数据库当前所支持的数组构造函数包括 array() 、 rb_build() ，支持的运算符包括 [] 。 array array() 函数用于构建一个数组数据。语法如下： array(elem1, elem2, elem3, ..., elem…"
---
切换语言

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

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

# 数组构造函数

更新时间：2026-03-15 15:13:39

[编辑](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/950.array-functions-of-mysql-mode/200.array-constructor-functions-of-mysql-mode.md)  

数组构造函数用于构建新的数组数据类型。OceanBase 数据库当前所支持的数组构造函数包括 `array()`、`rb_build()`，支持的运算符包括 `[]`。

## array

`array()` 函数用于构建一个数组数据。语法如下：

```sql
array(elem1, elem2, elem3, ..., elemN)
[elem1, elem2, elem3, ..., elemN]

```

elem1~elmenN：输入参数要求是相同的数据类型，目前支持的数组数据类型请参见[数组数据类型概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004481480)。

示例如下：

```sql
SELECT array(1, 2, 3);
+----------------+
| array(1, 2, 3) |
+----------------+
| [1,2,3]        |
+----------------+
1 row in set

```

## rb_build

`rb_build()` 函数用于将基础类型为整数的数组数据转换为高效压缩位图数据（RoaringBitmap）。语法如下：

```sql
rb_build(arr)

```

输入参数说明如下：

- `arr` 传入的类型必须是一个数组类型。

返回值是包含了数组所有元素的 RoaringBitmap。

约束如下：

- 数组不可包含空元素。
 - 若数组为嵌套数组，递归取出每个子数组的基础元素，并插入到 Roaringbitmap 中。
 - Roaringbitmap 支持插入无符号 64 位整数（uint64）和有符号 32 位整数（int32）数据。与 [rb_from_string](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004480781) 的行为一致，输入的有符号 32 位整数负数，将被先转换为无符号 32 位整数，再插入到 RoaringBitmap 中。因此允许输入的整数范围是从有符号 32 位整数的最小值到无符号 64 位整数的最大值，即 `[INT32_MIN, UINT64_MAX]`。

示例如下：

```sql
SELECT rb_to_string(rb_build([1.2]));
ERROR 5083 (22000): Invalid data type for the operation

```

```sql
SELECT rb_to_string(rb_build([0,1,2]));
+---------------------------------+
| rb_to_string(rb_build([0,1,2])) |
+---------------------------------+
| 0,1,2                           |
+---------------------------------+
1 row in set

```

```sql
SELECT rb_to_string(rb_build([[0,1],[2],[2,3]]));
+-------------------------------------------+
| rb_to_string(rb_build([[0,1],[2],[2,3]])) |
+-------------------------------------------+
| 0,1,2,3                                   |
+-------------------------------------------+
1 row in set

```

## []

运算符 `[]` 也可以实现数组数据的构造，示例如下：

```sql
SELECT [1, 2, 3];
+-----------+
| [1, 2, 3] |
+-----------+
| [1,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) 咨询热线
