我在presto中有一个表,一个名为(“mappings”)的列的键值对是字符串从hello中选择Map;例如:{“foo”:“baar”,“foo1”:“bar1”}我想将“mappings”列强制转换为一个Map像select cast(“mappings”as map)from hello;这将在presto中抛出错误。我们怎样才能把它转换成Map?
gojuced71#
没有规范的字符串表示形式 MAP 在普雷斯托,所以没有办法直接投给 MAP(VARCHAR, VARCHAR) . 但是,如果字符串包含jsonMap,则可以使用 json_parse 函数将字符串转换为 JSON 键入并将其转换为sql MAP 通过石膏。例子:
MAP
MAP(VARCHAR, VARCHAR)
json_parse
JSON
WITH data(c) AS ( VALUES '{"foo": "baar", "foo1": "bar1"}' ), parsed AS ( SELECT cast(json_parse(c) as map(varchar, varchar)) AS m FROM data ) SELECT m['foo'], m['foo1'] FROM parsed
生产:
_col0 | _col1 -------+------- baar | bar1
u1ehiz5o2#
从hello1中选择cast(json\u parse(mappings)as map(varchar,varchar));
2条答案
按热度按时间gojuced71#
没有规范的字符串表示形式
MAP
在普雷斯托,所以没有办法直接投给MAP(VARCHAR, VARCHAR)
. 但是,如果字符串包含jsonMap,则可以使用json_parse
函数将字符串转换为JSON
键入并将其转换为sqlMAP
通过石膏。例子:
生产:
u1ehiz5o2#
从hello1中选择cast(json\u parse(mappings)as map(varchar,varchar));