查询列为映射[Int,Int]的SQL
我正在做一些scala查询生成器 我的专栏之一是查询列为映射[Int,Int]的SQL,sql,amazon-athena,Sql,Amazon Athena,我正在做一些scala查询生成器 我的专栏之一是Map[Int,Int] sql查询查询其中一个对的值是什么样子的 比如: WHERE Map[KEY] >= VALUE 如何在SQL的列中访问映射上的一个值 语法可以使用Postgresql或Athena。如果我知道查询的名称,我可以随时用谷歌搜索备选方案 谢谢 找到了解决方案: 从 您可以前往aws雅典娜并运行: WITH dataset AS ( SELECT MAP( ARRAY['first', 'last', 'a
Map[Int,Int]
sql查询查询其中一个对的值是什么样子的
比如:
WHERE Map[KEY] >= VALUE
如何在SQL的列中访问映射上的一个值
语法可以使用Postgresql或Athena。如果我知道查询的名称,我可以随时用谷歌搜索备选方案
谢谢 找到了解决方案:
从
您可以前往aws雅典娜并运行:
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>
而且键
test
不存在,这将返回0行。@jarlh我更新了我的问题。Athena或Postgresql将是greatPostgres没有“映射”数据类型,但如果列是ajson
或jsonb
,则可以使用where(the_column->>“key”)::int>=42
SELECT user FROM dataset WHERE CAST(user['test'] AS bigint) > 20