

# 访问数组元素
<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     |
+----------------------------------------+
```