
# split_part
split_part函数用于依照分隔符separator拆分字符串str，返回从start部分到end部分的子串（闭区间）。
#### 命令格式
```
split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
```
#### 参数说明
表1参数说明 
| 参数        | 是否必选 | 参数类型   | 说明                                                               |
|:---|:---|:---|:---|
| str       | 是    | STRING | 待拆分的字符串。                                                         |
| separator | 是    | STRING | STRING类型常量。拆分用的分隔符，可以是一个字符，也可以是一个字符串。                            |
| start     | 是    | STRING | BIGINT类型常量，必须大于0。表示返回段的开始编号（从1开始）。                               |
| end       | 否    | BIGINT | BIGINT类型常量，大于等于start。表示返回段的截止编号，可省略，缺省时表示和start取值相等，返回start指定的段。 |
   
#### 返回值说明
返回STRING类型的值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- 如果start的值大于切分后实际的分段数，例如字符串拆分完有4个片段，start大于4，返回空串。
- 如果separator不存在于str中，且start指定为1，返回整个str。如果str为空串，则输出空串。
- 如果separator为空串，则返回原字符串str。
- 如果end大于片段个数，返回从start开始的子串。
- str非STRING、BIGINT、DOUBLE、DECIMAL或DATETIME类型时，返回报错。
- start或end非BIGINT类型常量时，返回报错。
- 除separator外，如果任一参数值为NULL，返回NULL。
 
#### 示例代码
返回aa。
```
select split_part('aa,bb,cc,dd', ',', 1);
```
返回aa,bb。
```
select split_part('aa,bb,cc,dd', ',', 1, 2);
```
返回空串。
```
select split_part('aa,bb,cc,dd', ',', 10);
```
返回aa,bb,cc,dd。
```
select split_part('aa,bb,cc,dd', ':', 1);
```
返回空串。
```
select split_part('aa,bb,cc,dd', ':', 2);
```
返回aa,bb,cc,dd。
```
select split_part('aa,bb,cc,dd', '', 1);
```
返回bb,cc,dd。
```
select split_part('aa,bb,cc,dd', ',', 2, 6);
```
返回NULL。
```
select split_part('aa,bb,cc,dd', ',', null);
```
