Перейти к содержимому
Последнее обновление

ARRAY

array​

SinceVersion 2.0.0

Описание​

Создаёт массив. Функция принимает ноль или более параметров и возвращает массив, содержащий все входные элементы.

Синтаксис​

array([element1, element2, ...])

Параметры​

  • element1, element2, ...: Элементы любого типа, которые нужно включить в массив. Поддерживается ноль или более параметров.

Поддерживаемые типы элементов:

  • Числовые типы: TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL
  • Строковые типы: CHAR, VARCHAR, STRING
  • Типы даты и времени: DATE, DATETIME, DATEV2, DATETIMEV2, TIMESTAMP_NS
  • Логический тип: BOOLEAN
  • Типы IP: IPV4, IPV6
  • UUID: UUID
  • Сложные типы: ARRAY, MAP, STRUCT

Возвращаемое значение​

Тип возвращаемого значения: ARRAY

Описание возвращаемого значения:

  • Возвращает массив, содержащий все входные элементы
  • Пустой массив, если входные параметры не указаны

Примечания по использованию:

  • Функция объединяет все входные элементы одного типа данных в массив. Если типы элементов несовместимы, функция попытается выполнить преобразование типов
  • Сложные и базовые типы несовместимы при объединении в массив; сложные типы также несовместимы между собой
  • Поддерживается ноль или более параметров

Примеры запросов:

Создание массива с несколькими элементами:

SELECT array(1, 2, 3, 4, 5);
+----------------------+
| array(1, 2, 3, 4, 5) |
+----------------------+
| [1, 2, 3, 4, 5] |
+----------------------+

Создание массива с элементами разных типов:

SELECT array(1, 'hello', 3.14, true);
+-------------------------------+
| array(1, 'hello', 3.14, true) |
+-------------------------------+
| ["1", "hello", "3.14", "1"] |
+-------------------------------+

Создание пустого массива:

SELECT array();
+----------+
| array() |
+----------+
| [] |
+----------+

Создание массива с элементами null:

SELECT array(1, null, 3, null, 5);
+--------------------------------+
| array(1, null, 3, null, 5) |
+--------------------------------+
| [1, null, 3, null, 5] |
+--------------------------------+

Примеры со сложными типами​

Создание массива, содержащего массивы:

SELECT array([1,2], [3,4], [5,6]);
+----------------------------+
| array([1,2], [3,4], [5,6]) |
+----------------------------+
| [[1, 2], [3, 4], [5, 6]] |
+----------------------------+

Создание массива, содержащего отображения:

SELECT array({'a':1}, {'b':2}, {'c':3});
+----------------------------------+
| array({'a':1}, {'b':2}, {'c':3}) |
+----------------------------------+
| [{"a":1}, {"b":2}, {"c":3}] |
+----------------------------------+

Создание массива, содержащего структуры:

SELECT array(named_struct('name','Alice','age',20), named_struct('name','Bob','age',30));
+-----------------------------------------------------------------------------------+
| array(named_struct('name','Alice','age',20), named_struct('name','Bob','age',30)) |
+-----------------------------------------------------------------------------------+
| [{"name":"Alice", "age":20}, {"name":"Bob", "age":30}] |
+-----------------------------------------------------------------------------------+

Сочетание сложных и базовых типов приводит к ошибке:

SELECT array([1,2], 'hello');
ERROR 1105 (HY000): errCode = 2, detailMessage = can not cast from origin type ARRAY<TINYINT> to target type=TEXT

Сочетание разных сложных типов приводит к ошибке:

SELECT array([1,2], named_struct('name','Alice','age',20));
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not find the compatibility function signature: array(ARRAY<TINYINT>, STRUCT<name:VARCHAR(5),age:TINYINT>)

Ключевые слова​

ARRAY