
# concat
concat函数用于拼接数组或字符串。
#### 命令格式
输入为ARRAY数组：将多个ARRAY数组中的所有元素连接在一起，生成一个新的ARRAY数组。
```
concat(array<T> <a>, array<T> <b>[,...])
```
输入为字符串：将多个字符串连接在一起，生成一个新的字符串。
```
concat(string <str1>, string <str2>[,...])
```
#### 参数说明
- 输入为ARRAY数组
  表1参数说明 
  | 参数  | 是否必选 | 参数类型   | 说明                                                                                                                                                                                                                           |
  |:---|:---|:---|:---|
  | a、b | 是    | STRING | ARRAY数组。 array\<T\>中的T指代ARRAY数组元素的数据类型，数组中的元素可以为任意类型。 a和b中元素的数据类型必须一致。数组中的元素为NULL值时会参与运算。 |
     
  
- 输入为字符串
  表2参数说明 
  | 参数        | 是否必选 | 参数类型   | 说明                                                                                                                                           |
  |:---|:---|:---|:---|
  | str1、str2 | 是    | STRING | 字符串。 如果输入参数为BIGINT、DOUBLE、DECIMAL或DATETIME类型，则会自动转换为STRING类型后参与运算，其他类型会返回报错。 |
     
  
 
#### 返回值说明
返回ARRAY数组或STRING的值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- 返回ARRAY类型。如果任一输入ARRAY数组为NULL，返回结果为NULL。
- 返回STRING类型。如果没有参数或任一参数为NULL，返回结果为NULL。
 
#### 示例代码
- 连接ARRAY数组array(1, 2)和array(2, -2)。命令示例如下。
  返回\[1, 2, 2, -2\]。
  ```
  select concat(array(1, 2), array(2, -2));
  ```
  
- 任一ARRAY数组为NULL。命令示例如下。
  返回NULL。
  ```
  select concat(array(10, 20), null);
  ```
  
- 连接字符串ABC和DEF。命令示例如下。
  返回ABCDEF。
  ```
  select concat('ABC','DEF');
  ```
  
- 输入为空。命令示例如下。
  返回NULL。
  ```
  select concat();
  ```
  
- 任一字符串输入为NULL。命令示例如下。
  返回NULL。
  ```
  select concat('abc', 'def', null);
  ```
  
 
