メインコンテンツまでスキップ
バージョン: 26.x

ELEMENT_AT

機能

ELEMENT_AT関数は、指定されたインデックスまたはキーに基づいて、配列またはマップから要素の値を抽出するために使用されます。

  • ARRAYに適用した場合、指定された位置の要素を返します。
  • MAPに適用した場合、指定されたキーに対応する値を返します。
  • VARIANTに適用した場合、指定されたサブフィールドの値を返します。

構文

ELEMENT_AT(container, key_or_index)

パラメータ

  • container: ARRAYMAP、またはVARIANTを指定できます。
  • key_or_index:
    • ARRAYの場合: 整数で、インデックスは1から始まります。
    • MAPの場合: MAPのキー型(K)で、サポートされている任意のプリミティブ型を使用できます。
    • VARIANTの場合: 文字列型。

Return Value

  • ARRAYの場合: 指定されたインデックスの要素を返します(T型)。
  • MAPの場合: 指定されたキーに対応する値を返します(V型)。
  • VARIANTの場合: VARIANT型の値を返します。
  • インデックスまたはキーが存在しない場合、NULLを返します。
  • パラメータがNULLの場合、NULLを返します。

注釈

  1. 配列のインデックスは1から始まり、0からではありません。
  2. 負のインデックスがサポートされています: -1は最後の要素、-2は最後から2番目の要素を表します。
  3. ELEMENT_AT(container, key_or_index)関数はcontainer[key_or_index]と同じ動作をします(詳細は例を参照してください)。

Examples

  1. 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 |
    +--------------+
  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 |
    +--------------------------+
  3. MAP内の存在しないKEYにアクセスするとNULLが返されます。

    SELECT ELEMENT_AT({"a": 1, "b": 2}, "c");
    +-----------------------------------+
    | ELEMENT_AT({"a": 1, "b": 2}, "c") |
    +-----------------------------------+
    | NULL |
    +-----------------------------------+
  4. 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), "") |
    +----------------------------------------+
    | |
    +----------------------------------------+