

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

# 建構子函數
<a name="sql-functions-constructor"></a>

SQL 建構函數是用來建立新的資料結構的函數，例如陣列或地圖。

 它們會取得一些輸入值，並傳回新的資料結構物件。建構函式通常以其建立的資料類型命名，例如 ARRAY 或 MAP。

建構函式與純量函式或彙總函式不同，它們操作於現有資料並傳回單一值。建構函式用於建立新的資料結構，然後可用於進一步的資料處理或分析。

AWS Clean Rooms 支援下列建構函數：

**Topics**
+ [MAP 建構函數](map_function.md)
+ [NAMED\$1STRUCT 建構函數](named-struct_function.md)
+ [STRUCT 建構函數](struct_function.md)

# MAP 建構函數
<a name="map_function"></a>

MAP 建構函式會使用指定的索引鍵/值對建立映射。

當您需要在 SQL 查詢中以程式設計方式建立新的資料結構時，像 MAP 這樣的建構器函數很有用。它們可讓您建置複雜的資料結構，可用於進一步的資料處理或分析。

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

```
map(key0, value0, key1, value1, ...)
```

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

 *key0*   
任何可比較類型的表達式。所有 *key0* 必須共用最低常見的類型。

 *value0*   
任何類型的表達式。所有 *valueN* 必須共用最小的常見類型。

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

MAP 函數會傳回 MAP，其索引鍵輸入為最不常見的索引*鍵 0* 類型，而值輸入為最不常見*的值 0* 類型。

## 範例
<a name="map_function-examples"></a>

下列範例會使用兩個索引鍵值對建立新的映射：索引鍵`1.0`與值 相關聯`'2'`。金鑰與值 `3.0`相關聯`'4'`。產生的對應接著會傳回為 SQL 陳述式的輸出。

```
SELECT map(1.0, '2', 3.0, '4');
 {1.0:"2",3.0:"4"}
```

# NAMED\$1STRUCT 建構函數
<a name="named-struct_function"></a>

NAMED\$1STRUCT 建構函數會建立具有指定欄位名稱和值的結構。

當您需要在 SQL 查詢中以程式設計方式建立新的資料結構時，像 NAMED\$1STRUCT 之類的建構器函數很有用。它們可讓您建置複雜的資料結構，例如結構或記錄，可用於進一步的資料處理或分析。

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

```
named_struct(name1, val1, name2, val2, ...)
```

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

 *name1*   
STRING 常值命名欄位 1。

 *val1*   
指定欄位 1 值的任何類型的表達式。

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

NAMED\$1STRUCT 函數會傳回欄位 1 符合 *val1* 類型的結構。

## 範例
<a name="named-struct_function-examples"></a>

下列範例會建立新的結構，其中包含三個具名欄位： 欄位`"a"`會獲指派值 `1`。欄位`"b"`被指派值 `2.` 欄位`"c"`被指派值 `3`。產生的結構接著會傳回為 SQL 陳述式的輸出。

```
SELECT named_struct("a", 1, "b", 2, "c", 3);
 {"a":1,"b":2,"c":3}
```

# STRUCT 建構函數
<a name="struct_function"></a>

STRUCT 建構函數會建立具有指定欄位值的結構。

當您需要在 SQL 查詢中以程式設計方式建立新的資料結構時，像 STRUCT 這樣的建構器函數非常有用。它們可讓您建置複雜的資料結構，例如結構或記錄，可用於進一步的資料處理或分析。

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

```
struct(col1, col2, col3, ...)
```

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

 *col1*   
欄名或任何有效表達式。

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

STRUCT 函數會傳回符合 expr*1* 類型的欄位 1 結構。 **

如果引數是具名參考，則名稱會用來命名 欄位。否則，欄位會命名為 *colN*，其中 N 是結構中欄位的位置。

## 範例
<a name="struct_function-examples"></a>

下列範例會建立新的結構，其中包含三個欄位：第一個欄位會獲指派值 1。第二個欄位會獲指派值 2。第三個欄位會獲指派值 3。根據預設，產生的結構中的欄位會根據其在引數清單中的位置命名為 `col1``col2`、 `col3`和 。產生的結構接著會傳回為 SQL 陳述式的輸出。

```
SELECT struct(1, 2, 3);
 {"col1":1,"col2":2,"col3":3}
```