

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

# COLLECT\_SET 函數
<a name="COLLECT_SET"></a>

COLLECT\_SET 函數會收集並傳回一組唯一元素。

當您想要從一組資料列收集所有相異的值到單一資料結構，但不包含任何重複項目時，此函數很有用。

**注意**  
函數是非確定性的，因為收集結果的順序取決於資料列的順序，這在執行隨機播放操作之後可能是非確定性的。

## 語法
<a name="COLLECT_SET-syntax"></a>

```
collect_set(expr)
```

## 引數
<a name="COLLECT_SET-arguments"></a>

 *expr*   
MAP 以外的任何類型的表達式。

## 傳回值
<a name="COLLECT_SET-returns"></a>

傳回引數類型的 ARRAY。陣列中元素的順序是非確定性的。

會排除 NULL 值。

## 範例
<a name="COLLECT_SET-example"></a>

下列查詢會從 col 資料欄將所有唯一值收集到集合中。`VALUES` 子句用於建立具有三列的內嵌資料表，其中每一列都有一個值分別為 1、2 和 1 的單欄 col。然後， `collect_set()`函數會用來從 col 資料欄將所有唯一值彙總為單一集合。此 SQL 陳述式的輸出會是集合 `[1,2]`，其中包含 col 欄中的唯一值。重複值 1 只會包含在結果中一次。

```
SELECT collect_set(col) FROM VALUES (1), (2), (1) AS tab(col);
 [1,2]
```