數組函數
更新時間 2025-07-07 18:26:18
最近更新時間: 2025-07-07 18:26:18
分享文章

本文介紹數組函數的基本語法及示例。
函數列表
| 函數名稱 | 語法 | 說明 |
|---|---|---|
| array | array(x1,...) | 創建一個數組。 |
| array_distinct | array_distinct(arr) | 接收一個數組,返回一個只包含不同元素的數組。 |
| array_intersect | array_intersect(arr1, arr2, ...) | 接收多個數組,返回交集數組。 |
| array_join | array_join(arr [, delimiter]) | 將數組元素以分隔符合并。 |
| array_max | array_max(arr) | 返回數組最大元素。 |
| array_min | array_min(arr) | 返回數組最小元素。 |
| array_position | array_position(arr) | 返回元素對應索引。 |
| array_sort | array_sort(arr) | 數組排序。 |
| array_contains | array_contains(arr, x) | 返回數組是否包含元素。 |
| element_at | element_at(arr, n) | 從數組中獲取對應索引位置的元素。 |
| flatten | flatten(arr) | 多維數組展平。 |
| sequence | sequence([start, ] end [, step]) | 返回數值序列數組。 |
| slice | slice(arr, offset [, length]) | 返回數組的片段。 |
| arrays_zip | arrays_zip(arr1, arr2, ...) | 將多個數組合并為一個二維數組,且各個數組中下標相同的元素組成一個新的數組。 |
| array_agg | array_agg(col) | 以數組形式返回字段col中的所有值。 |
array函數
創建一個數組,各參數類型必須相同。
語法
array(x1,...)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x1 | 原始數據 | 任意數據類型 | 否 |
| ... | 原始數據 | 任意數據類型 | 否 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array(1, 2, 3) |
| 返回結果 | [1,2,3] |
array_distinct函數
接收一個數組,返回一個只包含不同元素的數組。
語法
array_distinct(arr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_distinct(array(1, 2, 3, 3, 2)) |
| 返回結果 | [1, 2, 3] |
array_intersect函數
接收多個數組,返回交集數組。
語法
array_intersect(arr1,?arr2,?...)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr1 | 原始數組 | array類型 | 是 |
| arr2 | 原始數組 | array類型 | 是 |
| ... | 原始數組 | array類型 | 否 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_intersect(array(1,2,3), array(2, 3, 4)) |
| 返回結果 | [2, 3] |
array_join函數
將數組元素以分隔符合并。
語法
array_join(arr?[,?delimiter])
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數據 | array類型 | 是 |
| delimiter | 分隔符 | string類型 | 否 |
返回值類型
string類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_join(array(1, 2, 3), 'x') |
| 返回結果 | 1x2x3 |
array_max函數
返回數組內最大元素。
語法
array_max(arr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
返回值類型
integer類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_max(array(1, 2, 3)) |
| 返回結果 | 3 |
array_min函數
返回數組內最小元素。
語法
array_min(arr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
返回值類型
integer類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_min(array(1, 2, 3)) |
| 返回結果 | 1 |
array_position函數
返回元素對應索引。
語法
array_position(arr,?elem)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
| elem | 待查找元素 | 與數組arr內元素類型相同 | 是 |
返回值類型
integer類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_position(array(5, 6,4), 6) |
| 返回結果 | 2 |
array_sort函數
數組排序。
語法
array_sort(arr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_sort(array(3, 9, 5, 2, 4)) |
| 返回結果 | [2,3,4,5,9] |
array_contains函數
返回數組內是否包含元素。
語法
array_contains(arr,?x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
| x | 待查找元素 | 與數組arr內元素類型相同 | 是 |
返回值類型
integer類型(0:不包含;1:包含)
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_contains(array(1, 2, 3), 3) |
| 返回結果 | 1 |
element_at函數
從數組中獲取對應索引位置的元素。
語法
element_at(arr,?n)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
| n | 索引位置 | integer類型 | 是 |
返回值類型
與原始數組arr內元素類型相同
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT element_at(array('a', 'b', 'c'), 2) |
| 返回結果 | b |
flatten函數
多維數組展平。
語法
flatten(arr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始多維數組 | array類型 | 是 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT flatten(array(array('h', 'e', 'l', 'l', 'o'), array('w', 'o', 'r', 'l', 'd'))) |
| 返回結果 | ["h","e","l","l","o","w","o","r","l","d"] |
sequence函數
返回從start開始到end-1結束并以step為步長的數值序列數組。
語法
sequence([start,?]?end?[,?step])
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| start | 序列開始元素 | integer類型 | 否 |
| end | 序列結束元素 | integer類型 | 是 |
| step | 序列步長 | integer類型 | 否 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT sequence(1, 10, 2) |
| 返回結果 | [1,3,5,7,9] |
slice函數
返回數組的片段。
語法
slice(arr,?offset?[,?length])
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr | 原始數組 | array類型 | 是 |
| offset | 片段在原始數組的偏移量 | integer類型 | 是 |
| length | 片段長度 | integer類型 | 否 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT slice(array(1, 2, 3, 4, 5), 2, 2) |
| 返回結果 | [2,3] |
arrays_zip函數
將多個數組合并為一個二維數組,且各個數組中下標相同的元素組成一個新的數組。
語法
arrays_zip(arr1,?...)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| arr1 | 原始數組 | array類型 | 是 |
| ... | 原始數組 | array類型 | 否 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT arrays_zip(array(1, 2, 3), array(3, 4, 5)) |
| 返回結果 | [[1,3],[2,4],[3,5]] |
array_agg函數
以數組形式返回字段col中的所有值。
語法
array_agg(col)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| col | 索引字段名稱 |
任意類型 | 是 |
返回值類型
array類型
示例
| 類型 | 示例 |
|---|---|
| 統計分析語句 | SELECT array_agg(level) |
| 返回結果 | ["INFO","INFO","INFO","ERROR","INFO", ...] |