
# parse_url
返回给定URL的指定部分。partToExtract的有效值包括HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE和USERINFO。当第二个参数为QUERY时，可以使用第三个参数提取特定参数的值。
#### 命令格式
```
parse_url(string <urlString>, string <partToExtract [, string <keyToExtract>])
```
#### 参数说明
| 参数            | 是否必选 | 参数类型   | 说明                                                                |
|:---|:---|:---|:---|
| urlString     | 是    | STRING | URL链接。                                                            |
| partToExtract | 是    | STRING | 取值包含：HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE和USERINFO，不区分大小写。 |
| keyToExtract  | 否    | STRING | 当partToExtract取值为QUERY时，根据key值取出对应的Value值。                        |
   
#### 返回值说明
返回STRING类型的值。
![](https://support.huaweicloud.com/sqlref-spark-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- urlString、partToExtract或keyToExtract值为NULL时，返回NULL。
- partToExtract取值不符合要求时，返回NULL。
 
#### 示例代码
返回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:666。
```
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');
```
