跳到主要内容
版本: 最新版本-3.5

array_slice

返回数组的一个切片。这个函数从 input 中截取从 offset 指定位置开始的 length 个元素。

语法

array_slice(input, offset, length)

参数

  • input: 您想要截取切片的数组。这个函数支持以下类型的数组元素:BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, VARCHAR, DECIMALV2, DATETIME, DATE 和 JSON。JSON 从 2.5 版本开始支持。

  • offset: 从哪个位置开始截取元素。有效值从 1 开始。它必须是一个 BIGINT 值。

  • length: 您想要截取的切片的长度。它必须是一个 BIGINT 值。

返回值

返回一个与 input 参数指定的数组具有相同数据类型的数组。

使用说明

  • offset 从 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] |
+---------------------+