Как объединить / объединить / добавить два массива в SQL, чтобы сформировать новый массив? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица, которая содержит два столбца, в котором хранятся данные в формате массива. Например, column_1 содержит значения типа [1,2,3,4], а column_2 содержит значения типа [5,6,7]. Я хочу объединить эти два, чтобы создать column_3, чье значение здесь будет массивом [1,2,3,4,5,6,7]. Числа будут уникальными, а длина массивов может быть разной.

1 Ответ

1 голос
/ 20 июня 2019

у вас работает?

select array_cat(array_construct(NULL, 2), array_construct(3, 4));
+------------------------------------------------------------+
| ARRAY_CAT(ARRAY_CONSTRUCT(NULL, 2), ARRAY_CONSTRUCT(3, 4)) |
|------------------------------------------------------------|
| [                                                          |
|   undefined,                                               |
|   2,                                                       |
|   3,                                                       |
|   4                                                        |
| ]                                                          |
+------------------------------------------------------------+

Но если вы видите такую ​​ошибку:

select array_cat(NULL, array_construct(3, 4));
100072 (22000): NULL result in a non-nullable column

Вы можете просто добавить:

select array_cat(IFNULL(NULL, array_construct()), array_construct(3, 4));
+-------------------------------------------------------------------+
| ARRAY_CAT(IFNULL(NULL, ARRAY_CONSTRUCT()), ARRAY_CONSTRUCT(3, 4)) |
|-------------------------------------------------------------------|
| [                                                                 |
|   3,                                                              |
|   4                                                               |
| ]                                                                 |
+-------------------------------------------------------------------+
1 Row(s) produced. Time Elapsed: 1.241s

Примечание: Замените ARRAY_CONSTRUCT () на имя столбца.

...