配列から位置を指定して要素を取得する、またはマップからキーを指定して値を取得します。
構文
配列へのアクセス
<array_expr>[<index>]マップへのアクセス
<map_expr>[<key>]重要
角括弧表記(bracket notation)を直接使用してください。INDEX(...) のように関数呼び出しでラップしないでください。INDEX(<var1>[<var2>]) を実行するとエラーが発生します。
注意事項
配列のインデックスは 0 始まりです:最初の要素のインデックスは
0、2 番目の要素は1、以降同様です。マップへのアクセスでは、キーはマップで宣言されたキー型
Kと厳密に一致する必要があります。
パラメーター
配列へのアクセス
| パラメーター | 型 | 説明 |
|---|---|---|
array_expr | array<T> | アクセス対象の配列です。配列が null の場合、null を返します。 |
index | BIGINT(0 以上) | 取得対象の要素の 0 始まりの位置です。インデックスが範囲外の場合、null を返します。 |
戻り値の型: T — array<T> で宣言された要素の型です。
マップへのアクセス
| パラメーター | 型 | 説明 |
|---|---|---|
map_expr | map<K, V> | アクセス対象のマップです。マップが null の場合、null を返します。 |
key | K | 検索対象のキーです。キーがマップ内に存在しない場合、null を返します。 |
戻り値の型: V — map<K, V> で宣言された値の型です。
例
位置を指定して配列要素にアクセス
-- 'c' を返します(インデックス 2 は 3 番目の要素)
SELECT ARRAY('a', 'b', 'c')[2];キーを指定してマップの値にアクセス
-- 1 を返します
SELECT STR_TO_MAP("test1=1,test2=2")["test1"];関連関数
INDEX は複合型関数です。ARRAY、MAP、STRUCT、および JSON データを処理する関数の詳細については、「複合型関数」をご参照ください。