
# concat_ws
concat_ws函数用于连接多个字符串，字符串之间以指定的分隔符分隔。
#### 命令格式
```
concat_ws(string <separator>, string <str1>, string <str2>[,...])
```
或
```
concat_ws(string <separator>, array<string> <a>)
```
返回将参数中的所有字符串或ARRAY数组中的元素按照指定的分隔符连接在一起的结果。
#### 参数说明
表1参数说明 
| 参数        | 是否必选 | 参数类型   | 说明                                                                                                                                                |
|:---|:---|:---|:---|
| separator | 是    | STRING | STRING类型的分隔符。                                                                                                                                     |
| str1、str2 | 是    | STRING | 至少要指定2个字符串。 STRING类型。如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型，则会隐式转换为STRING类型后参与运算。 |
| a         | 是    | ARRAY  | 数组中的元素为STRING类型。                                                                                                                                  |
   
#### 返回值说明
返回STRING类型或STRUCT类型的值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- str1或str2非STRING、BIGINT、DECIMAL、DOUBLE或DATETIME类型时，返回报错。
- 如果参数（待拼接字符）为NULL，则会忽略这个参数
- 如果没有输入参数（待拼接字符）返回NULL。
 
#### 示例代码
- 将字符串ABC和DEF通过:连接。命令示例如下。
  返回ABC:DEF。
  ```
  select concat_ws(':','ABC','DEF');
  ```
  
- 任一输入参数为NULL。命令示例如下。
  返回avg:18。
  ```
  select concat_ws(':','avg',null,'18');
  ```
  
- 将ARRAY数组array('name', 'lilei')中的元素通过:连接。命令示例如下。
  返回name:lilei。
  ```
  select concat_ws(':',array('name', 'lilei'));
  ```
  
 
