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

array_slice

Описание

Возвращает срез массива. Эта функция извлекает length элементов из input, начиная с позиции, указанной параметром offset.

Синтаксис

array_slice(input, offset, length)

Параметры

  • input: массив, срез которого вы хотите извлечь. Эта функция поддерживает следующие типы элементов массива: BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, VARCHAR, DECIMALV2, DATETIME, DATE и JSON. JSON поддерживается начиная с версии 1.5.0.

  • offset: позиция, с которой начинается извлечение элементов. Допустимые значения начинаются с 1. Должно быть значением типа BIGINT.

  • length: длина среза, который вы хотите извлечь. Должно быть значением типа BIGINT.

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

Возвращает массив с тем же типом данных, что и массив, указанный в параметре input.

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

  • Смещение начинается с 1.
  • Если указанная длина превышает фактическое количество элементов, которые можно извлечь, возвращаются все соответствующие элементы. См. Пример 4.

Примеры

Пример 1: Извлечение 2 элементов, начиная с третьего элемента.

mysql> select array_slice([1,2,4,5,6], 3, 2) as res;
+-------+
| res |
+-------+
| [4,5] |
+-------+

Пример 2: Извлечение 2 элементов, начиная с первого элемента.

mysql> select array_slice(["sql","storage","query","execute"], 1, 2) as res;
+-------------------+
| res |
+-------------------+
| ["sql","storage"] |
+-------------------+

Пример 3: Null элементы обрабатываются как обычные значения.

mysql> select array_slice([57.73,97.32,128.55,null,324.2], 3, 3) as res;
+---------------------+
| res |
+---------------------+
| [128.55,null,324.2] |
+---------------------+

Пример 4: Извлечение 5 элементов, начиная с третьего элемента.

Эта функция пытается извлечь 5 элементов, но начиная с третьего элемента доступно только 3 элемента. В результате возвращаются все эти 3 элемента.

mysql> select array_slice([57.73,97.32,128.55,null,324.2], 3, 5) as res;
+---------------------+
| res |
+---------------------+
| [128.55,null,324.2] |
+---------------------+