将字符串str按照split1分成Key-Value对,并按split2将Key-Value对分开,返回多个key所对应的Value。
命令格式
KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)
参数说明
str:必填。STRING类型。待拆分的字符串。
split1、split2:必填。STRING类型。用于作为分隔符的字符串,按照指定的两个分隔符拆分源字符串。当某个被split1拆分后的字符串中有多个split2时,返回结果未定义。
key:必填。STRING类型。将字符串按照split1和split2拆分后,返回key值对应的Value。
返回值说明
返回STRING类型。返回规则如下:
split1或split2值为NULL时,返回NULL。
str或key值为NULL或没有匹配的key时,返回NULL。
使用示例
--创建表
create table mf_user (
user_id string,
user_info string
);
--插入数据
insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
--查询
SELECT user_id,
KEYVALUE(user_info,';',':','age') as age,
KEYVALUE(user_info,';',':','genda') as genda,
KEYVALUE(user_info,';',':','address') as address
FROM mf_user;
--等同于使用KEYVALUE查询
SELECT user_id,
age,
genda,
address
FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;
结果如下所示。
+------------+------------+------------+------------+
| user_id | age | genda | address |
+------------+------------+------------+------------+
| 1 | 18 | f | abc |
| 2 | 20 | m | bcd |
+------------+------------+------------+------------+
相关函数
KEYVALUE_TUPLE函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数。