【问题标题】:Query Postgres for number of items in JSON查询 Postgres 以获取 JSON 中的项目数
【发布时间】:2015-02-07 13:03:09
【问题描述】:

我正在运行 Postgres 9.3,但在涉及我似乎无法破解的 JSON 列的查询时遇到问题。

假设这是表格:

# CREATE TABLE aa (a int, b json);
# INSERT INTO aa VALUES (1, '{"f1":1,"f2":true}');
# INSERT INTO aa VALUES (2, '{"f1":2,"f2":false,"f3":"Hi I''m \"Dave\""}');
# INSERT INTO aa VALUES (3, '{"f1":3,"f2":true,"f3":"Hi I''m \"Popo\""}');

我现在想创建一个查询,它返回在 JSON 列的根节点(即第 2 行和第 3 行)中恰好具有三个项/键的所有行。 JSON 是否嵌套没关系。

我尝试使用json_object_keysjson_each,但无法使用。

【问题讨论】:

  • 请更准确地定义“项目数”。根节点中的属性?嵌套元素算不算?
  • 是的,根节点中的属性就是我的意思。我会更新问题。

标签: json postgresql postgresql-9.3


【解决方案1】:

json_each(json) 应该可以完成这项工作。只计算根元素:

SELECT aa.*
FROM   aa, json_each(aa.b) elem
GROUP  BY aa.a   -- possible, because it's the PK!
HAVING count(*) = 3;

SQL Fiddle.

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 2021-07-10
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2013-09-20
    • 2012-11-26
    • 2019-05-06
    • 2017-07-08
    相关资源
    最近更新 更多