类别:

:doc:`/sql-reference/functions-semistructured`(数组/对象)

ARRAY_REMOVE_AT

给定源 ARRAY,返回一个 ARRAY,其中包含位于指定位置的已移除元素。

例如,ARRAY_REMOVE_AT([2, 5, 7], 0) 返回一个已移除位置 0 处的元素([5, 7])的 ARRAY。

语法

ARRAY_REMOVE_AT( <array> , <position> )
Copy

实参

array

源数组。

position

要移除的元素的(基于零的)位置。函数删除此位置的元素。

负位置被解释为数组后面的索引(例如 -1 表示移除数组中的最后一个元素)。

返回

移除了指定位置的元素的 ARRAY。

如果 position 为 NULL,则函数返回 NULL。

使用说明

  • 如果 position 的绝对值超过 array 的长度,则函数返回 array 时不移除任何元素。

示例

下面的示例返回一个 ARRAY,其中包含已移除第一个元素的元素。

SELECT ARRAY_REMOVE_AT(
  [2, 5, 7],
  0);
Copy
+-------------------------------+
| ARRAY_REMOVE_AT([2, 5, 7], 0) |
|-------------------------------|
| [                             |
|   5,                          |
|   7                           |
| ]                             |
+-------------------------------+

下面的示例返回一个 ARRAY,其中包含已移除最后一个元素的元素。

SELECT ARRAY_REMOVE_AT(
  [2, 5, 7],
  -1);
Copy
+--------------------------------+
| ARRAY_REMOVE_AT([2, 5, 7], -1) |
|--------------------------------|
| [                              |
|   2,                           |
|   5                            |
| ]                              |
+--------------------------------+

在以下示例中,position 大于 ARRAY 的长度,因此函数返回 ARRAY 而不进行任何更改。

SELECT ARRAY_REMOVE_AT(
  [2, 5, 7],
  10);
Copy
+------------------+
| ARRAY_REMOVE_AT( |
|   [2, 5, 7],     |
|   10)            |
|------------------|
| [                |
|   2,             |
|   5,             |
|   7              |
| ]                |
+------------------+
语言: 中文