
# concat_ws
连接多个字符串，字符串之间以指定的分隔符分隔。
#### 命令格式
```
concat_ws(string <separator>, string <str1>, string <str2>[,...])
```
或
```
concat_ws(string <separator>, array<string> <a>)
```
#### 参数说明
| 参数        | 是否必选 | 参数类型   | 说明                                                                     |
|:---|:---|:---|:---|
| separator | 是    | STRING | 分隔符。                                                                   |
| str1、str2 | 是    | STRING | 至少要指定2个字符串。如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型，则会隐式转换为STRING类型后参与运算。 |
| a         | 是    | ARRAY  | 数组中的元素为STRING类型。                                                       |
   
#### 返回值说明
返回STRING类型的值。
![](https://support.huaweicloud.com/sqlref-spark-aidatalake/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'));
```
