ELEMENT_AT
機能
ELEMENT_AT関数は、指定されたインデックスまたはキーに基づいて、配列またはマップから要素の値を抽出するために使用されます。
- ARRAYに適用した場合、指定された位置の要素を返します。
- MAPに適用した場合、指定されたキーに対応する値を返します。
- VARIANTに適用した場合、指定されたサブフィールドの値を返します。
構文
ELEMENT_AT(container, key_or_index)
パラメータ
container:ARRAY、MAP、またはVARIANTを指定できます。key_or_index:ARRAYの場合: 整数で、インデックスは1から始まります。MAPの場合:MAPのキー型(K)で、サポートされている任意のプリミティブ型を使用できます。VARIANTの場合: 文字列型。
Return Value
ARRAYの場合: 指定されたインデックスの要素を返します(T型)。MAPの場合: 指定されたキーに対応する値を返します(V型)。VARIANTの場合:VARIANT型の値を返します。- インデックスまたはキーが存在しない場合、
NULLを返します。 - パラメータが
NULLの場合、NULLを返します。
注釈
- 配列のインデックスは1から始まり、0からではありません。
- 負のインデックスがサポートされています:
-1は最後の要素、-2は最後から2番目の要素を表します。 ELEMENT_AT(container, key_or_index)関数はcontainer[key_or_index]と同じ動作をします(詳細は例を参照してください)。
Examples
-
ELEMENT_AT関数は[]と同じように動作します。SELECT ELEMENT_AT([1, 2, 3], 2);
+--------------------------+
| ELEMENT_AT([1, 2, 3], 2) |
+--------------------------+
| 2 |
+--------------------------+
SELECT [1, 2, 3][2];
+--------------+
| [1, 2, 3][2] |
+--------------+
| 2 |
+--------------+ -
配列のインデックスは1から始まり、範囲外アクセスは
NULLを返します。SELECT ELEMENT_AT([1, 2, 3], 0);
+--------------------------+
| ELEMENT_AT([1, 2, 3], 0) |
+--------------------------+
| NULL |
+--------------------------+
SELECT ELEMENT_AT([1, 2, 3], 4);
+--------------------------+
| ELEMENT_AT([1, 2, 3], 4) |
+--------------------------+
| NULL |
+--------------------------+ -
MAP内の存在しないKEYにアクセスするとNULLが返されます。SELECT ELEMENT_AT({"a": 1, "b": 2}, "c");
+-----------------------------------+
| ELEMENT_AT({"a": 1, "b": 2}, "c") |
+-----------------------------------+
| NULL |
+-----------------------------------+ -
VARIANTのサブフィールドにアクセスする際、VARIANTの値がOBJECTでない場合、空の値が返されます。SELECT ELEMENT_AT(CAST('{"a": 1, "b": 2}' AS VARIANT), "a");
+------------------------------------------------------+
| ELEMENT_AT(CAST('{"a": 1, "b": 2}' AS VARIANT), "a") |
+------------------------------------------------------+
| 1 |
+------------------------------------------------------+
SELECT ELEMENT_AT(CAST('123' AS VARIANT), "");
+----------------------------------------+
| ELEMENT_AT(CAST('123' AS VARIANT), "") |
+----------------------------------------+
| |
+----------------------------------------+