arrays_zip
指定された配列をインデックスでマージし、入力配列の n 番目の値をすべて含む構造体の配列にします。配列の長さが異なる場合、欠けている要素は NULL で埋められます。
Syntax
arrays_zip(array_1, array_2[, ...])
Parameters
array_n: マージされる配列。各配列はサポートされている任意の型の要素を含むことができます。
Return value
入力配列の n 番目のフィールドを含む n 番目の構造体を持つ STRUCT の ARRAY を返します。入力配列の長さが異なる場合、短い配列は NULL 値で埋められます。
Usage notes
- 入力配列の長さが異なる場合、結果配列の長さは入力配列の中で最も長いものになります。
- 短い配列の欠けている値は NULL で埋められます。
- いずれかの入力配列が NULL の場合、結果は NULL になります。
- すべての入力配列が空の場合、結果は空の配列になります。
Examples
Example 1: 同じ長さの2つの配列をマージします。
mysql> SELECT arrays_zip([1, 2], ['a', 'b']) AS result;
+---------------------------------------------------+
| result |
+---------------------------------------------------+
| [{"col1":"1","col2":"a"},{"col1":"2","col2":"b"}] |
+---------------------------------------------------+
Example 2: 異なる長さの2つの配列をマージします。
mysql> SELECT arrays_zip([1, 2], ['a', null, 'c']) AS result;
+-----------------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------------+
| [{"col1":"1","col2":"a"},{"col1":"2","col2":null},{"col1":null,"col2":"c"}] |
+-----------------------------------------------------------------------------+
Example 3: 3つの配列をマージします。
mysql> SELECT arrays_zip([1, 2, 3], ['a', 'b', 'c'], [10, 20, 30]) AS result;
+---------------------------------------------------------------------------------------------------------------+
| result |
+---------------------------------------------------------------------------------------------------------------+
| [{"col1":"1","col2":"a","col3":"10"},{"col1":"2","col2":"b","col3":"20"},{"col1":"3","col2":"c","col3":"30"}] |
+---------------------------------------------------------------------------------------------------------------+
Example 4: 空の配列を2つマージします。
mysql> SELECT arrays_zip([], []) AS result;
+--------+
| result |
+--------+
| [] |
+--------+
Example 5: 単一の配列をマージします。
mysql> SELECT arrays_zip([1, 2, 3]) AS result;
+------------------------------------------+
| result |
+------------------------------------------+
| [{"col1":"1"},{"col1":"2"},{"col1":"3"}] |
+------------------------------------------+
Example 6: 1つの配列が NULL の場合にマージします。
mysql> SELECT arrays_zip(null, [1, 2]) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+
Example 7: NULL 値を含む異なる型の配列をマージします。
mysql> SELECT arrays_zip([1, null, 3], ['a', 'b', null]) AS result;
+-----------------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------------+
| [{"col1":"1","col2":"a"},{"col1":null,"col2":"b"},{"col1":"3","col2":null}] |
+-----------------------------------------------------------------------------+
Example 8: テーブルデータから配列をマージします。
mysql> CREATE TABLE IF NOT EXISTS test (id INT, arr1 ARRAY<INT>, arr2 ARRAY<VARCHAR>) PROPERTIES ("replication_num"="1");
mysql> INSERT INTO test VALUES (1, [1, 2], ['a', 'b']), (2, [3, 4, 5], ['x', 'y']);
mysql> SELECT id, arrays_zip(arr1, arr2) AS result FROM test;
+------+----------------------------------------------------------------------------+
| id | result |
+------+----------------------------------------------------------------------------+
| 1 | [{"col1":"1","col2":"a"},{"col1":"2","col2":"b"}] |
| 2 | [{"col1":"3","col2":"x"},{"col1":"4","col2":"y"},{"col1":"5","col2":null}] |
+------+----------------------------------------------------------------------------+