

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 存取陣列元素
<a name="accessing-array-elements"></a>

若要存取陣列元素，使用 `[]` 運算子，並以 1 指定第一個元素，2 指定第二個元素，依此類推，如此範例所示：

```
WITH dataset AS (
SELECT
   ARRAY[CAST(MAP(ARRAY['a1', 'a2', 'a3'], ARRAY[1, 2, 3]) AS JSON)] ||
   ARRAY[CAST(MAP(ARRAY['b1', 'b2', 'b3'], ARRAY[4, 5, 6]) AS JSON)]
AS items )
SELECT items[1] AS item FROM dataset
```

此查詢會傳回：

```
+------------------------+
| item                   |
+------------------------+
| {"a1":1,"a2":2,"a3":3} |
+------------------------+
```

若要存取指定位置的陣列元素 (稱為索引位置)，請使用 `element_at()` 函數，並指定陣列名稱和索引位置：
+ 如果索引大於 0，`element_at()` 會傳回您指定的元素，從陣列的開頭開始往結尾算。它的行為和 `[]` 運算子一樣。
+ 如果索引小於 0，`element_at()` 傳回的元素是從陣列的結尾開始往開頭算。

以下查詢會建立陣列 `words`，並從中選取第一個元素 `hello` 做為 `first_word`，選取第二個元素 `amazon` (從陣列結尾往前算) 做為 `middle_word`，選取第三個元素 `athena` 做為 `last_word`。

```
WITH dataset AS (
  SELECT ARRAY ['hello', 'amazon', 'athena'] AS words
)
SELECT
  element_at(words, 1) AS first_word,
  element_at(words, -2) AS middle_word,
  element_at(words, cardinality(words)) AS last_word
FROM dataset
```

此查詢會傳回：

```
+----------------------------------------+
| first_word  | middle_word | last_word  |
+----------------------------------------+
| hello       | amazon      | athena     |
+----------------------------------------+
```