使用delimiter1将text分割成Key-Value对,然后使用delimiter2分割每个Key-Value对的Key和Value。
命令格式
str_to_map([string <mapDupKeyPolicy>,] <text> [, <delimiter1> [, <delimiter2>]])
参数说明
- mapDupKeyPolicy:可选。STRING类型。指定出现重复Key时的处理方式。取值范围如下:
- exception:如果出现重复的Key,返回报错。
- last_win:如果出现重复的Key,后边的值将覆盖前边的值。
说明 MaxCompute的行为实现优先以函数中mapDupKeyPolicy的取值为准,当函数未配置mapDupKeyPolicy时,以odps.sql.map.key.dedup.policy
参数的取值为准。 - text:必填。STRING类型,指被分割的字符串。
- delimiter1:可选。STRING类型,分隔符,不指定时默认为英文逗号(
,
)。 - delimiter2:可选。STRING类型,分隔符,不指定时默认为等于号(
=
)。说明 当分隔符是正则表达式或特殊字符时,要在前面加两个反斜线(\\)来做转义。特殊字符包括冒号(:)、英文句点(.)、问号(?)、加号(+)或星号(*)。
返回值说明
返回值类型为map<string, string>
。返回值是text被delimiter1和delimiter2分割后的结果。
使用示例
--返回{test1:1, test2:2}。
select str_to_map('test1&1-test2&2','-','&');
--返回{test1:1, test2:2}。
select str_to_map("test1.1,test2.2", ",", "\\.");
--返回{test1:1, test2:3}。
select str_to_map("test1.1,test2.2,test2.3", ",", "\\.");