str\u to\u hive函数将字符串的每个字符拆分为键

oyt4ldly  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(337)

我有一根绳子 "description=Qiemo|locationToolsID=733" 在配置单元中的一个字符串列中。当我尝试使用分隔符将其转换为Map时 | 对于每千伏和 = 对于键和值,它不起作用。
具体来说,当我跑步时:

str_to_map(str('description=Qiemo|locationToolsID=733'),'|','=').

我在期待

description:Qiemo
locationToolsID:733

但我越来越像这样了

{"a":null,"":"","c":null,"d":null,"D":null,"e":null,"i":null,"I":null,"l":null,"m":null,"n":null,"o":null,"p":null,"Q":null,"r":null,"s":null,"3":null,"t":null,"T":null,"7":null,"|":null}

这是怎么回事?

qnzebej0

qnzebej01#

你必须逃离 | 字符,因为它在java正则表达式中有特殊的含义。你可以试试这个:

select str_to_map("description=Qiemo|locationToolsID=733",'\\\|','=');
                         OR
select str_to_map("description=Qiemo|locationToolsID=733",'[|]','=');

输出为: {"locationToolsID":"733","description":"Qiemo"}

相关问题