从大括号SQL提取值

时间:2019-06-02 17:27:52

标签: sql data-science data-analysis presto

我正在尝试弄清楚如何从Prestosql的列中的大括号中提取值。

该字段看起来像

rates
{"B":750}
{"B":1600}
{"B":900}

我只想提取每个括号中的数字值。 另外,如果我想将其除以10再除以20,是否容易添加到查询中?

rates列的类型为map(varchar, bigint)

2 个答案:

答案 0 :(得分:2)

由于rates列的类型为map(varchar, bigint)。您可以在其上使用Presto Map Functions and Operators。例子:

SELECT rates['B'] FROM ... -- value under key "B"
SELECT map_values(rates) FROM ... -- all values in a map

Presto documentation中查看更多信息。

答案 1 :(得分:1)

使用类似这样的方法,其中regexp_extract函数从字符串中提取数字,而cast函数将其从字符串转换为数字,然后可以将其除以10个。

select cast(regexp_extract(rates, '\d+') as double) / 10
from my_table