本文档为您介绍数组相关函数的语法及示例。
语句 | 含义 | 示例 |
---|---|---|
下标运算符[] | []用于获取数组中的某个元素。 | - |
array_distinct | 数组去重,获取数组中的唯一元素。 | - |
array_intersect(x, y) | 获取x,y两个数组的交集。 | - |
array_union(x, y) → array | 获取x,y两个数组的并集。 | - |
array_except(x, y) → array | 获取x,y两个数组的差集 | - |
array_join(x, delimiter, null_replacement) → varchar | 把字符串数组用delimiter连接,拼接成字符串,null值用null_replacement替代。
说明 使用array_join函数时,返回结果最大为1 KB,超出1 KB的数据会被截断。
|
- |
array_max(x) → x | 获取x中的最大值。 | - |
array_min(x) → x | 获取x中的最小值。 | - |
array_position(x, element) → bigint | 获取element在x中的下标,下标从1开始。如果找不到,则返回0。 | - |
array_remove(x, element) → array | 从数组中移除element。 | - |
array_sort(x) → array | 给数组排序,null值放到最后。 | - |
cardinality(x) → bigint | 获取数组的大小。 | - |
concat(array1, array2, …, arrayN) → array | 连接数组。 | - |
contains(x, element) → boolean | 如果x中包含element,则返回true。 | - |
filter(array, function) → array | function 是一个Lambda函数,请参考Lambda函数中的filter。 | - |
flatten(x) → array | 把二维的array拼接成一维的array。 | - |
reduce(array, initialState, inputFunction, outputFunction) → x | 请参考Lambda函数reduce。 | - |
reverse(x) → array | 把x反向排列。 | - |
sequence(start, stop) → array | 生成从start到stop结束的一个序列,每一步加1。 | - |
sequence(start, stop, step) → array | 生成从start到stop结束的一个序列,每一步加step。 | - |
sequence(start, stop, step) → array | start和stop是timestamp类型,生成从start到stop结束的timestamp数组。step是INTERVAL类型,可以是DAY到SECOND,也可以是YEAR或MONTH。 | - |
shuffle(x) → array | 重新随机分布array。 | - |
slice(x, start, length) → array | 获取x数组从start开始,length个元素组成新的数组。 | - |
transform(array, function) → array | 请参见Lambda函数transform()。 | - |
zip(array1, array2[, …]) → array | 合并多个数组。结果的第M个元素的第N个参数,是原始第N个数组的第M个元素,相当于把多个数组进行了转置。 | SELECT zip(ARRAY[1, 2], ARRAY[‘1b’, null, ‘3b’]); — [ROW(1, ‘1b’), ROW(2, null), ROW(null,
‘3b’)] |
zip_with(array1, array2, function) → array | 请参见Lambda函数zip_with。 | - |
array_agg (key) | array_agg (key)是一个聚合函数,表示把key这一列的所有内容变成一个array返回。 | * | select array_agg(key) |
array_transpose(array[array[x,y,z], array[a,b,c]]) | 对矩阵进行转置操作。 | - |