
# keyvalue
keyvalue函数用于计算将字符串str按照split1进行切分，并按split2将每组变成Key-Value对，返回key所对应的Value。
#### 命令格式
```
keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
```
#### 参数说明
表1参数说明 
| 参数            | 是否必选 | 参数类型   | 说明                                                                                                       |
|:---|:---|:---|:---|
| str           | 是    | STRING | 待拆分的字符串。                                                                                                 |
| split1、split2 | 否    | STRING | 用于作为分隔符的字符串，按照指定的两个分隔符拆分源字符串。如果表达式中没有指定这两项，默认split1为";"，split2为":"。当某个被split1拆分后的字符串中有多个split2时，返回结果未定义。 |
| key           | 否    | BIGINT | 将字符串按照split1和split2拆分后，返回key值对应的Value。                                                                   |
   
#### 返回值说明
返回STRING类型。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- split1或split2值为NULL时，返回NULL。
- str或key值为NULL或没有匹配的key时，返回NULL。
- 如果有多个Key-Value匹配，返回第一个匹配上的key对应的Value。
 
#### 示例代码
返回2。
```
select keyvalue('a:1;b:2', 'b');
```
返回2。
```
select keyvalue("\;abc:1\;def:2","\;",":","def");
```
