文档

STR_TO_MAP

更新时间:

当您需要将字符串转换为Map类型以便查询和报表生成时,MaxCompute提供STR_TO_MAP函数,可以帮助您将数据转换为MAP格式,使用分隔符1(delimiter1)将目标字符串分割成Key-Value对,然后使用分隔符2(delimiter2)分割每个Key-Value对的Key和Value。本文为您介绍在MaxCompute中将字符串转换为MAP类型函数的使用。

命令格式

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

相关函数

STR_TO_MAP函数属于其他函数,更多其他业务场景的函数请参见其他函数