我在presto中有一张表,一列名为(“ mappings”)的键值对为字符串
从问候中选择映射;
例如:{“ foo”:“ baar”,“ foo1”:“ bar1”}
我想将“映射”列转换为MAP
像从hello中选择CAST(“映射”为MAP);
这将在presto中引发错误。我们如何将其翻译成地图?
答案 0 :(得分:3)
在Presto中,MAP
没有规范的字符串表示形式,因此无法将其直接转换为MAP(VARCHAR, VARCHAR)
。但是,如果您的字符串包含JSON映射,则可以使用json_parse
函数将字符串转换为JSON
类型的值,然后通过{{3将其转换为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
答案 1 :(得分:0)
从hello1中选择cast(json_parse(mappings)as MAP(VARCHAR,VARCHAR));