文档

KEYVALUE_TUPLE

更新时间:

将字符串str按照split1分成Key-Value对,并按split2将Key-Value对分开,返回多个key所对应的Value。

命令格式

KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)

参数说明

  • str:必填。STRING类型。待拆分的字符串。

  • split1split2:必填。STRING类型。用于作为分隔符的字符串,按照指定的两个分隔符拆分源字符串。当某个被split1拆分后的字符串中有多个split2时,返回结果未定义。

  • key:必填。STRING类型。将字符串按照split1split2拆分后,返回key值对应的Value。

返回值说明

返回STRING类型。返回规则如下:

  • split1split2值为NULL时,返回NULL。

  • strkey值为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函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数