合并多个给定数组并返回一个结构数组,其中第N个结构包含输入数组的所有第N个值。
命令格式
array<struct<T, U, ...>> arrays_zip(array<T> <a>, array<U> <b>[, ...])
参数说明
a、b:必填。ARRAY数组。array<T>
及array<U>
中的T
和U
指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。
数组中的元素可以为如下类型:
TINYINT、SMALLINT、INT、BIGINT
FLOAT、DOUBLE
BOOLEAN
DECIMAL、DECIMALVAL
DATE、DATETIME、TIMESTAMP、IntervalDayTime、IntervalYearMonth
STRING、BINARY、VARCHAR、CHAR
ARRAY、STRUCT、MAP
返回值说明
返回ARRAY类型。返回规则如下:
生成的结构数组中第N个结构包含输入数组的所有第N个值, 不足N的元素以NULL填充。
如果输入ARRAY数组中任意一个为NULL,返回结果为NULL。
使用示例
示例1:通过ARRAY数组
array(1, 2, 3)
和array(2, 3, 4)
构造结构数组。命令示例如下。--返回[{0:1, 1:2}, {0:2, 1:3}, {0:3, 1:4}]。 select arrays_zip(array(1, 2, 3), array(2, 3, 4));
示例2:通过ARRAY数组
array(1, 2, 3)
和array(4, 5)
构造结构数组。命令示例如下。--返回[{0:1, 1:4}, {0:2, 1:5}, {0:3, 1:NULL}]。 select arrays_zip(array(1, 2, 3), array(4, 5));
相关函数
ARRAYS_ZIP函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数。