【问题标题】:Querying SQL with a column being a Map[Int, Int]使用 Map[Int, Int] 的列查询 SQL
【发布时间】:2019-05-09 19:25:26
【问题描述】:

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

我的一个专栏是Map[Int, Int]

查询其中一对的值的 sql 查询是什么样的?

类似:

WHERE Map[KEY] >= VALUE

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

语法可以使用 Postgresql 或 Athena。如果我知道查询的名称,我总是可以用谷歌搜索替代方案。

谢谢。

【问题讨论】:

  • @jarlh 我更新了我的问题。 Athena 或 Postgresql 会很棒
  • Postgres 没有“map”数据类型,但如果列是jsonjsonb,则可以使用where (the_column ->> 'key')::int >= 42

标签: sql amazon-athena


【解决方案1】:

找到解决方案:

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

你可以去 aws athena 并运行:

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行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多