將字串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函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。