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] |
+---------------------+