カテゴリ:

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

ARRAY_INSERT

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

構文

ARRAY_INSERT( <array> , <pos> , <new_element> )
Copy
こちらもご参照ください。

ARRAY_APPENDARRAY_PREPEND

引数

array

ソース配列です。

pos

ソース配列内の(ゼロベースの)位置です。新しい要素はこの位置に挿入されます。この位置からの元の要素(存在する場合)および後続のすべての要素(存在する場合)は、結果配列の1つ右の位置にシフトされます(つまり、位置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                                              |
| ]                                                |
+--------------------------------------------------+
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