数组函数
更新时间 2025-11-11 16:22:31
最近更新时间: 2025-11-11 16:22:31

本文介绍数组函数的基本语法及示例。
函数列表
| 函数名称 | 语法 | 说明 |
|---|---|---|
| array | array(x1,...) | 创建一个数组。 |
| array_distinct | array_distinct(arr) | 接收一个数组,返回一个只包含不同元素的数组。 |
| array_intersect | array_intersect(arr1, arr2, ...) | 接收多个数组,返回交集数组。 |
| array_join | array_join(arr [, delimiter]) | 将数组元素以分隔符合并。 |
| array_max | array_max(arr) | 返回数组最大元素。 |
| array_min | array_min(arr) | 返回数组最小元素。 |
| array_position | array_position(arr) | 返回元素对应索引。 |
| array_sort | array_sort(arr) | 数组排序。 |
| array_contains | array_contains(arr, x) | 返回数组是否包含元素。 |
| element_at | element_at(arr, n) | 从数组中获取对应索引位置的元素。 |
| flatten | flatten(arr) | 多维数组展平。 |
| sequence | sequence([start, ] end [, step]) | 返回数值序列数组。 |
| slice | slice(arr, offset [, length]) | 返回数组的片段。 |
| arrays_zip | arrays_zip(arr1, arr2, ...) | 将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。 |
| array_agg | array_agg(col) | 以数组形式返回字段col中的所有值。 |
array函数
创建一个数组,各参数类型必须相同。
语法
array(x1,...)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| x1 | 原始数据 | 任意数据类型 | 否 |
| ... | 原始数据 | 任意数据类型 | 否 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array(1, 2, 3) |
| 返回结果 | [1,2,3] |
array_distinct函数
接收一个数组,返回一个只包含不同元素的数组。
语法
array_distinct(arr)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_distinct(array(1, 2, 3, 3, 2)) |
| 返回结果 | [1, 2, 3] |
array_intersect函数
接收多个数组,返回交集数组。
语法
array_intersect(arr1,arr2,...)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr1 | 原始数组 | array类型 | 是 |
| arr2 | 原始数组 | array类型 | 是 |
| ... | 原始数组 | array类型 | 否 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_intersect(array(1,2,3), array(2, 3, 4)) |
| 返回结果 | [2, 3] |
array_join函数
将数组元素以分隔符合并。
语法
array_join(arr [,delimiter])参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数据 | array类型 | 是 |
| delimiter | 分隔符 | string类型 | 否 |
返回值类型
string类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_join(array(1, 2, 3), 'x') |
| 返回结果 | 1x2x3 |
array_max函数
返回数组内最大元素。
语法
array_max(arr)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
返回值类型
integer类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_max(array(1, 2, 3)) |
| 返回结果 | 3 |
array_min函数
返回数组内最小元素。
语法
array_min(arr)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
返回值类型
integer类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_min(array(1, 2, 3)) |
| 返回结果 | 1 |
array_position函数
返回元素对应索引。
语法
array_position(arr,elem)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
| elem | 待查找元素 | 与数组arr内元素类型相同 | 是 |
返回值类型
integer类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_position(array(5, 6,4), 6) |
| 返回结果 | 2 |
array_sort函数
数组排序。
语法
array_sort(arr)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_sort(array(3, 9, 5, 2, 4)) |
| 返回结果 | [2,3,4,5,9] |
array_contains函数
返回数组内是否包含元素。
语法
array_contains(arr,x)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
| x | 待查找元素 | 与数组arr内元素类型相同 | 是 |
返回值类型
integer类型(0:不包含;1:包含)
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_contains(array(1, 2, 3), 3) |
| 返回结果 | 1 |
element_at函数
从数组中获取对应索引位置的元素。
语法
element_at(arr,n)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
| n | 索引位置 | integer类型 | 是 |
返回值类型
与原始数组arr内元素类型相同
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT element_at(array('a', 'b', 'c'), 2) |
| 返回结果 | b |
flatten函数
多维数组展平。
语法
flatten(arr)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始多维数组 | array类型 | 是 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT flatten(array(array('h', 'e', 'l', 'l', 'o'), array('w', 'o', 'r', 'l', 'd'))) |
| 返回结果 | ["h","e","l","l","o","w","o","r","l","d"] |
sequence函数
返回从start开始到end-1结束并以step为步长的数值序列数组。
语法
sequence([start, ] end [, step])参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| start | 序列开始元素 | integer类型 | 否 |
| end | 序列结束元素 | integer类型 | 是 |
| step | 序列步长 | integer类型 | 否 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT sequence(1, 10, 2) |
| 返回结果 | [1,3,5,7,9] |
slice函数
返回数组的片段。
语法
slice(arr,offset [, length])参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | array类型 | 是 |
| offset | 片段在原始数组的偏移量 | integer类型 | 是 |
| length | 片段长度 | integer类型 | 否 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT slice(array(1, 2, 3, 4, 5), 2, 2) |
| 返回结果 | [2,3] |
arrays_zip函数
将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。
语法
arrays_zip(arr1,...)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| arr1 | 原始数组 | array类型 | 是 |
| ... | 原始数组 | array类型 | 否 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT arrays_zip(array(1, 2, 3), array(3, 4, 5)) |
| 返回结果 | [[1,3],[2,4],[3,5]] |
array_agg函数
以数组形式返回字段col中的所有值。
语法
array_agg(col)参数说明
| 参数名称 | 说明 | 类型 | 是否必选 |
|---|---|---|---|
| col | 索引字段名称 | 任意类型 | 是 |
返回值类型
array类型
示例
| 类型 | 示例 |
|---|---|
| 统计分析语句 | SELECT array_agg(level) |
| 返回结果 | ["INFO","INFO","INFO","ERROR","INFO", ...] |