全部产品
阿里云办公

数组处理函数

更新时间:2017-10-17 20:02:15

array_distinct(x) → array

从数组 x 删除相同的值.

array_intersect(x, y) → array

返回 x 与 y 的交集,没有重复.

array_union(x, y) → array

返回 x 与 y 的并集,没有重复.

array_join(x, delimiter, null_replacement) → varchar

使用delimiter来连接数组的元素组成字符串,并且用可选的null_replacement来代替空值.

array_max(x) → x

返回数组的最大值.

array_min(x) → x

返回数组的最小值.

array_position(x, element) → bigint

返回 x 中第一个匹配 element 的位置,如果没有找个匹配的元素,则返回0.

array_remove(x, element) → array

移除 x 中所有等与 element 的元素.

array_sort(x) → array

对 x 进行排序. x 的元素必须是可比较的. 空值将会被放置在结果数组的末尾.

cardinality(x) → bigint

返回 x 的size.

concat(x, y) → array

连接 x 和 y. 这个函数的功能与操作符 || 功能相同.

contains(x, element) → boolean

如果 x 包含 element 则返回true.

element_at(array<E>, index) → E

返回 array 中给定 index 位置的元素. 如果 index >= 0, 这个函数和操作符 []的功能相同. 如果 index 小于 0,element_at 就从最后一个元素开始倒序获取第 index 绝对值位置的元素.

filter(array, function) → array

参见 filter().

flatten(x) → array

通过连接将 array(array(T)) 映射到 array(T) .

reduce(array, initialState, inputFunction, outputFunction) → x

参见 reduce().

reverse(x) → array

返回一个与 x 反序的数组.

sequence(start, stop) → array<bigint>

返回 start 到 stop 之间的证书序列. 如果 start 小于或等于 stop 则按 1 递增, 否则按 -1 递减 .

sequence(start, stop, step) → array<bigint>

返回一个从 start to stop 之间按step 递增的序列.

sequence(start, stop, step) → array<timestamp>

返回一个从 start to stop 之间按step 递增的序列.

step 的类型可以是 INTERVAL DAY TO SECOND 或者 INTERVAL YEAR TO MONTH .

shuffle(x) → array

生成数组 x 的随机排列.

slice(x, start, length) → array

从 x 生成一个 start 位置开始length结束的数组,如果 start 是负数,则从数组末尾开始.

transform(array, function) → array

参见 transform().

zip(array1, array2[, …]) → array<row>

将给定数组合并为一个单行数组. 原多行数组中的第M行的第N个元素将会被放置在第N个输出元素的第M位置. 如果多行的长度不一致,那么会将缺省值补为NULL:

  1. SELECT zip(ARRAY[1, 2], ARRAY['1b', null, '3b']); -- [ROW(1, '1b'), ROW(2, null), ROW(null, '3b')]