- 类别:
:doc:`/sql-reference/functions-semistructured`(数组/对象)
ARRAY_INSERT¶
返回一个包含源数组的所有元素以及新元素的数组。
语法¶
ARRAY_INSERT( <array> , <pos> , <new_element> )
实参¶
array
源数组。
pos
源数组中的位置(从零开始)。新元素将插入到此位置。该位置的原始元素(如有)和所有后续元素(如有)在生成的数组中向右移动一个位置(即在位置 0 插入的效果与使用 ARRAY_PREPEND 时相同)。
负位置被解释为从数组后面算起的索引(例如
-1
会导致在数组中的最后一个元素之前插入)。new_element
要插入的元素。新元素位于位置
pos
处。源数组中其他元素的相对顺序将会保留。
返回¶
返回值的数据类型是 ARRAY
。
使用说明¶
当您将 结构化 ARRAY 传递给该函数时,该函数会返回相同类型的结构化 ARRAY。
如果
array
是 结构化的 ARRAY,则新元素的类型必须对该类型的 ARRAY 具有 强制性。如果
pos
的绝对值超过array
中的元素数,则会在新元素和源数组中的元素之间插入其他空元素。要将元素追加到数组,或在数组前面添加元素,应改用 ARRAY_APPEND 或 ARRAY_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 |
| ] |
+--------------------------------------------------+
这显示了一个插入,该插入使用的索引大于数组中现有元素的数量。
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" |
| ] |
+--------------------------------------------------+
这显示了使用负索引的插入。
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 |
| ] |
+---------------------------------------------------+