从Presto中的JSON列获取特定值

时间:2017-06-27 19:03:55

标签: sql database computer-science presto

我有一个包含JSON列points的表,其中一行为:

{"0": 0.2, "1": 1.2, "2": 0.5, "15": 1.2, "20": 0.7}

我想获取密钥"1""20"的值,并将其存储为查询中的firstsecond等别名。我到目前为止所做的是:

SELECT points, k, v from rewards CROSS JOIN UNNEST(SPLIT_TO_MAP(points, ',', ':')) AS m(k,v) where name='John'

但是这个查询给了我k的所有行,v。如何只选择对应于“1”和“20”的那两个值?

1 个答案:

答案 0 :(得分:2)

JSON_EXTRACT_SCALAR成功了。

JSON_EXTRACT_SCALAR(points, '$["1"]') AS first_value

JSON_EXTRACT_SCALAR(points, '$["20"]') AS second_value