1

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

该领域看起来像,

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

我只想提取每个括号中的数值。另外,如果我想将它除以 10 然后除以 20 会很容易添加到查询中吗?

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

4

2 回答 2

2

由于ratescolumn 的类型是map(varchar, bigint). 您可以在其上使用Presto Map 函数和运算符。例子:

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

Presto 文档中查看更多信息。

于 2019-06-03T17:57:12.063 回答
1

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

select cast(regexp_extract(rates, '\d+') as double) / 10
from my_table
于 2019-06-03T13:43:11.513 回答