查询带有Map [Int,Int]列的SQL

时间:2019-05-09 19:25:27

标签: sql amazon-athena

我正在开发一些scala查询生成器。

我的一列是Map[Int, Int]

一个SQL查询如何查询一对值?

类似:

WHERE Map[KEY] >= VALUE

如何在SQL的列中访问Map上的一个值?

语法可以使用Postgresql或Athena。如果我知道查询的名称,那么我总是可以用谷歌搜索其他名称。

谢谢。

1 个答案:

答案 0 :(得分:0)

找到解决方案:

来自https://docs.aws.amazon.com/athena/latest/ug/maps.html

您可以去雅典娜awsna并运行:

WITH dataset AS (
  SELECT MAP(
    ARRAY['first', 'last', 'age'],
    ARRAY['Bob', 'Smith', '35']
  ) AS user UNION ALL
  SELECT MAP(
    ARRAY['first', 'last', 'age'],
    ARRAY['john', 'doe', '12']
  ) AS user
)
SELECT user FROM dataset WHERE CAST(user['age'] AS bigint) > 20

所以答案就是我在示例中所问的!哈哈

WHERE map[key] <operator> <value>

如果您正在这样做:

SELECT user FROM dataset WHERE CAST(user['test'] AS bigint) > 20

test不存在,它将返回0行。