使用delimiter1text分割成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>。返回值是textdelimiter1delimiter2分割后的结果。

使用示例

--返回{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", ",", "\\.");