
# parse_url
parse_url函数用于返回给定URL的指定部分，partToExtract的有效值包括HOST，PATH， QUERY， REF， PROTOCOL， AUTHORITY，FILE和USERINFO。
例如：parse_url('http://facebook.com/path1/p.php?k1=v1\&k2=v2#Ref1', 'HOST') 返回 'facebook.com'.。
当第二个参数为QUERY时，可以使用第三个参数提取特定参数的值，例如： parse_url('http://facebook.com/path1/p.php?k1=v1\&k2=v2#Ref1', 'QUERY', 'k1') 返回'v1'。
#### 命令格式
```
parse_url(string urlString, string partToExtract [, string keyToExtract])
```
#### 参数说明
表1参数说明 
| 参数            | 是否必选 | 参数类型   | 说明                                                                |
|:---|:---|:---|:---|
| urlString     | 是    | STRING | URL链接。无效URL链接会返回报错。                                               |
| partToExtract | 是    | STRING | 取值包含：HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE和USERINFO，不区分大小写。 |
| keyToExtract  | 否    | STRING | 当part取值为QUERY时，根据key值取出对应的Value值。                                 |
   
#### 返回值说明
返回STRING类型。返回规则如下：
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- urlString、partToExtract或keyToExtract值为NULL时，返回NULL。
- partToExtract 取值不符合要求时，返回报错。
 
#### 示例代码
返回example.com。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST');
```
返回/over/there/index.dtb。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH');
```
返回animal。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type');
```
返回nose。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF');
```
返回file。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL');
```
返回 username@example.com:8042。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY');
```
返回username。
```
select parse_url('file://username@example.com:666/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');
```
