【问题标题】:querying json object from table in postgreSQL从 postgreSQL 中的表中查询 json 对象
【发布时间】:2015-07-02 17:15:38
【问题描述】:

我想在 postgreSql 中对表中的 json 对象使用 where 条件。例如,我需要如何执行此操作:我有一个表“测试”,它具有三列名称(varchar),url(varchar),more(json)。我需要检索 css21Colors = Purple 的日期。 more是json类型,下面是more字段的值。

请让我知道查询相同的语法应该是什么?

more = {"colorTree":{"Purple":[{"Spanish Violet":"#522173"}],
"Brown":[{"Dark Puce":"#4e3347"}],"White":[{"White":"#ffffff"}],
"Black":[{"Eerie Black":"#1d0d27"}],"Gray":[{"Rose Quartz":"#a091a4"}]},
"sizeoutscount":0,"css21Colors":{"Purple":69,"Brown":5,"White":4,"Black":17,"Gray":3},
"sizeins": [],"sizeinscount":0,"sizeouts":[],"allsizes":["8","10","16"],
"css3Colors": {"Rose Quartz":3,"White":4,"Dark Puce":5,"Eerie Black":17,"Spanish
Violet":69},"hexColors":{"#522173":69,"#4e3347":5,"#ffffff":4,"#1d0d27":17,"#a091a4":3}}

【问题讨论】:

  • 提及 PostgreSQL 版本 (select version())
  • PostgreSQL 版本为 9.4.0

标签: json postgresql psql postgresql-9.4


【解决方案1】:
SELECT more->'css21Colors'->'Purple' FROM test;

此外,您只能查询包含该键的行。

SELECT
  more->'css21Colors'->'Purple'
FROM
  test
WHERE
  (more->'css21Colors')::jsonb ? 'Purple';

介意切换到jsonb 数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多