カテゴリ:

半構造化データ関数 (配列/オブジェクト)

ARRAY_INSERT

ソース配列のすべての要素と新しい要素を含む配列を返します。

構文

ARRAY_INSERT( <array> , <pos> , <new_element> )
こちらもご覧ください:

ARRAY_APPENDARRAY_PREPEND

引数

配列

ソース配列です。

ポジション

ソース配列内の(ゼロベースの)位置です。新しい要素はこの位置に挿入されます。この位置からの元の要素(存在する場合)および後続のすべての要素(存在する場合)は、結果配列の1つ右の位置にシフトされます(つまり、位置0に挿入すると、 ARRAY_PREPEND を使用するのと同じ影響があります)。

負の位置は、配列の後ろからのインデックスとして解釈されます(例えば -1 は配列の最後の要素の前に挿入されます)。

新しい要素

挿入される要素。新しい要素は位置 ポジション にあります。ソース配列の他の要素の相対的な順序は保持されます。

戻り値

返される値のデータ型は 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                                               |
| ]                                                 |
+---------------------------------------------------+