类别:

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

ARRAY_INSERT

返回一个包含源数组的所有元素以及新元素的数组。

语法

ARRAY_INSERT( <array> , <pos> , <new_element> )
Copy
另请参阅:

ARRAY_APPENDARRAY_PREPEND

实参

array

源数组。

pos

源数组中的位置(从零开始)。新元素将插入到此位置。该位置的原始元素(如有)和所有后续元素(如有)在生成的数组中向右移动一个位置(即在位置 0 插入的效果与使用 ARRAY_PREPEND 时相同)。

负位置被解释为从数组后面算起的索引(例如 -1 会导致在数组中的最后一个元素之前插入)。

new_element

要插入的元素。新元素位于位置 pos 处。源数组中其他元素的相对顺序将会保留。

返回

返回值的数据类型是 ARRAY

使用说明

  • 当您将 结构化 ARRAY 传递给该函数时,该函数会返回相同类型的结构化 ARRAY。

  • 如果 array结构化的 ARRAY,则新元素的类型必须对该类型的 ARRAY 具有 强制性

  • 如果 pos 的绝对值超过 array 中的元素数,则会在新元素和源数组中的元素之间插入其他空元素。

  • 要将元素追加到数组,或在数组前面添加元素,应改用 ARRAY_APPENDARRAY_PREPEND

示例

这显示了插入到数组中的简单示例:

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   "hello",                                       |
|   2,                                             |
|   3                                              |
| ]                                                |
+--------------------------------------------------+
Copy

这显示了一个插入,该插入使用的索引大于数组中现有元素的数量。

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   2,                                             |
|   3,                                             |
|   undefined,                                     |
|   "hello"                                        |
| ]                                                |
+--------------------------------------------------+
Copy

这显示了使用负索引的插入。

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'hello');
+---------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'HELLO') |
|---------------------------------------------------|
| [                                                 |
|   0,                                              |
|   1,                                              |
|   2,                                              |
|   "hello",                                        |
|   3                                               |
| ]                                                 |
+---------------------------------------------------+
Copy
语言: 中文