跳到主要内容

数组构造函数

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

array

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

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

elem1~elmenN:输入参数要求是相同的数据类型,目前支持的数组数据类型请参见数组数据类型概述

示例如下:

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

rb_build

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

rb_build(arr)

输入参数说明如下:

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

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

约束如下:

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

示例如下:

SELECT rb_to_string(rb_build([1.2]));
ERROR 5083 (22000): Invalid data type for the operation
SELECT rb_to_string(rb_build([0,1,2]));
+---------------------------------+
| rb_to_string(rb_build([0,1,2])) |
+---------------------------------+
| 0,1,2 |
+---------------------------------+
1 row in set (0.001 sec)
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 (0.001 sec)

[]

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

SELECT [1, 2, 3];
+-----------+
| [1, 2, 3] |
+-----------+
| [1,2,3] |
+-----------+
1 row in set (0.001 sec)