如何在presto中将varchar转换为map(varchar,varchar)

t98cgbkg  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(2459)

我在presto中有一个表,一个名为(“mappings”)的列的键值对是字符串
从hello中选择Map;
例如:{“foo”:“baar”,“foo1”:“bar1”}
我想将“mappings”列强制转换为一个Map
像select cast(“mappings”as map)from hello;
这将在presto中抛出错误。我们怎样才能把它转换成Map?

gojuced7

gojuced71#

没有规范的字符串表示形式 MAP 在普雷斯托,所以没有办法直接投给 MAP(VARCHAR, VARCHAR) . 但是,如果字符串包含jsonMap,则可以使用 json_parse 函数将字符串转换为 JSON 键入并将其转换为sql MAP 通过石膏。
例子:

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
u1ehiz5o

u1ehiz5o2#

从hello1中选择cast(json\u parse(mappings)as map(varchar,varchar));

相关问题