

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 构造函数
<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, ...)
```

## Arguments
<a name="map_function-arguments"></a>

 *key0*   
任何可比类型的表达式。所有 *key0* 必须共享最不常见的类型。

 *value0*   
任何类型的表达式。所有 *ValuEn* 都必须共享一种最不常见的类型。

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

MAP 函数返回一个 MAP，其中键为最不常见的 *key0 类型，键*入为最不常见的 *valu* e0 类型。

## 示例
<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>

 *名字1*   
字符串字面命名字段 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 函数返回一个结构，其中的*字段 1 与 expr1* 的类型相匹配。*

如果参数被命名为引用，则使用这些名称来命名字段。否则，这些字段将命名为 *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}
```