本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要存取陣列元素,使用 []
運算子,並以 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 |
+----------------------------------------+