跳到主要内容

数组函数

本节提供了 Databend 中数组函数 (Array Functions) 的相关参考信息。数组函数能够创建、操作、搜索和转换数组数据结构。

数组创建与构造

函数描述示例
ARRAY_CONSTRUCT根据单个值创建数组ARRAY_CONSTRUCT(1, 2, 3)[1,2,3]
RANGE生成连续数字序列数组RANGE(1, 5)[1,2,3,4]

数组访问与信息

函数描述示例
GET通过索引获取数组元素GET([1,2,3], 1)1
ARRAY_GETGET 函数的别名ARRAY_GET([1,2,3], 1)1
CONTAINS检查数组是否包含特定值CONTAINS([1,2,3], 2)true
ARRAY_CONTAINS检查数组是否包含特定值ARRAY_CONTAINS([1,2,3], 2)true

数组修改

函数描述示例
ARRAY_APPEND在数组末尾追加元素ARRAY_APPEND([1,2], 3)[1,2,3]
ARRAY_PREPEND在数组开头添加元素ARRAY_PREPEND(0, [1,2])[0,1,2]
ARRAY_INSERT在指定位置插入元素ARRAY_INSERT([1,3], 1, 2)[1,2,3]
ARRAY_REMOVE移除所有指定元素ARRAY_REMOVE([1,2,2,3], 2)[1,3]
ARRAY_REMOVE_FIRST移除数组首个元素ARRAY_REMOVE_FIRST([1,2,3])[2,3]
ARRAY_REMOVE_LAST移除数组末尾元素ARRAY_REMOVE_LAST([1,2,3])[1,2]

数组组合与操作

函数描述示例
ARRAY_CONCAT连接多个数组ARRAY_CONCAT([1,2], [3,4])[1,2,3,4]
ARRAY_SLICE提取数组子集ARRAY_SLICE([1,2,3,4], 1, 2)[1,2]
SLICEARRAY_SLICE 函数的别名SLICE([1,2,3,4], 1, 2)[1,2]
ARRAYS_ZIP按元素组合多个数组ARRAYS_ZIP([1,2], ['a','b'])[(1,'a'),(2,'b')]

数组集合运算

函数描述示例
ARRAY_DISTINCT返回数组唯一元素ARRAY_DISTINCT([1,2,2,3])[1,2,3]
ARRAY_UNIQUEARRAY_DISTINCT 函数的别名ARRAY_UNIQUE([1,2,2,3])[1,2,3]
ARRAY_INTERSECTION返回数组交集元素ARRAY_INTERSECTION([1,2,3], [2,3,4])[2,3]
ARRAY_EXCEPT返回数组差集元素ARRAY_EXCEPT([1,2,3], [2,4])[1,3]
ARRAY_OVERLAP检查数组是否存在交集ARRAY_OVERLAP([1,2,3], [3,4,5])true

数组处理与转换

函数描述示例
ARRAY_TRANSFORM对每个元素应用函数ARRAY_TRANSFORM([1,2,3], x -> x * 2)[2,4,6]
ARRAY_FILTER按条件筛选数组元素ARRAY_FILTER([1,2,3,4], x -> x > 2)[3,4]
ARRAY_REDUCE使用聚合函数归约数组ARRAY_REDUCE([1,2,3], 0, (acc,x) -> acc + x)6
ARRAY_AGGREGATE使用函数聚合数组元素ARRAY_AGGREGATE([1,2,3], 'sum')6

数组工具函数

函数描述示例
ARRAY_COMPACT移除数组中的空值(null)ARRAY_COMPACT([1,null,2,null,3])[1,2,3]
ARRAY_FLATTEN展平嵌套数组ARRAY_FLATTEN([[1,2],[3,4]])[1,2,3,4]
ARRAY_REVERSE反转数组元素顺序ARRAY_REVERSE([1,2,3])[3,2,1]
ARRAY_INDEXOF返回元素首次出现的索引ARRAY_INDEXOF([1,2,3,2], 2)1
UNNEST将数组展开为独立行UNNEST([1,2,3])1, 2, 3 (作为独立行)