合并多个给定数组并返回一个结构数组,其中第N个结构包含输入数组的所有第N个值。

命令格式

array<struct<T, U, ...>> arrays_zip(array<T> <a>, array<U> <b>[, ...])

参数说明

ab:必填。ARRAY数组。array<T>array<U>中的TU指代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数据)的处理函数请参见复杂类型函数