

# 连接字符串和数组
<a name="concatenating-strings-and-arrays"></a>

连接字符串和连接数组使用的是类似的技术。

## 连接字符串
<a name="concatenating-strings"></a>

要连接两个字符串，可以使用双管道 `||` 运算符，如以下示例中所示。

```
SELECT 'This' || ' is' || ' a' || ' test.' AS Concatenated_String
```

此查询返回：


****  

| \$1 | Concatenated\$1String | 
| --- | --- | 
| 1 |  `This is a test.`  | 

您可以使用 `concat()` 函数来获得相同的结果。

```
SELECT concat('This', ' is', ' a', ' test.') AS Concatenated_String
```

此查询返回：


****  

| \$1 | Concatenated\$1String | 
| --- | --- | 
| 1 |  `This is a test.`  | 

您可以使用 `concat_ws()` 函数将字符串与第一个参数中的指定分隔符连接起来。

```
SELECT concat_ws(' ', 'This', 'is', 'a', 'test.') as Concatenated_String
```

此查询返回：


****  

| \$1 | Concatenated\$1String | 
| --- | --- | 
| 1 |  `This is a test.`  | 

要使用点来连接字符串数据类型的两列，请使用双引号引用这两列，并将点括在单引号中作为硬编码字符串。如果某列不是字符串数据类型，则可以先使用 `CAST("column_name" as VARCHAR)` 转换该列。

```
SELECT "col1" || '.' || "col2" as Concatenated_String
FROM my_table
```

此查询返回：


****  

| \$1 | Concatenated\$1String | 
| --- | --- | 
| 1 |  `col1_string_value.col2_string_value`  | 

## 连接数组
<a name="concatenating-arrays"></a>

您可以使用相同的技术来连接数组。

要连接多个数组，请使用双管道 `||` 运算符。

```
SELECT ARRAY [4,5] || ARRAY[ ARRAY[1,2], ARRAY[3,4] ] AS items
```

此查询返回：


****  

| \$1 | 项目 | 
| --- | --- | 
| 1 |  `[[4, 5], [1, 2], [3, 4]]`  | 

要将多个数组组合成一个数组，请使用双管道运算符或 `concat()` 函数。

```
WITH
dataset AS (
  SELECT
    ARRAY ['Hello', 'Amazon', 'Athena'] AS words,
    ARRAY ['Hi', 'Alexa'] AS alexa
)
SELECT concat(words, alexa) AS welcome_msg
FROM dataset
```

此查询返回：


****  

| \$1 | welcome\$1msg | 
| --- | --- | 
| 1 |  `[Hello, Amazon, Athena, Hi, Alexa]`  | 

有关 `concat()` 或其他字符串函数的更多信息，请参阅 Trino 文档中的 [字符串函数和运算符](https://trino.io/docs/current/functions/string.html)。