我在 presto 中有表,名为 ("mappings") 的一列将键值对作为字符串
从 hello 中选择映射;
例如:{“foo”:“baar”,“foo1”:“bar1”}
我想将“映射”列转换为 MAP
比如 select CAST("mappings" as MAP) from hello;
这将立即引发错误。我们如何将其翻译成地图?
Presto中没有 a 的规范字符串表示形式MAP
,因此无法将其直接转换为MAP(VARCHAR, VARCHAR)
. 但是,如果您的字符串包含 JSON 映射,您可以使用该json_parse
函数将字符串转换为类型的值,并通过castJSON
将其转换为 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
select cast( json_parse(mappings) as MAP(VARCHAR,VARCHAR)) from hello1;