【问题标题】:postgres sql Query a field with Json datapostgresql 用 Json 数据查询一个字段
【发布时间】:2021-06-28 03:09:01
【问题描述】:

我们在包含 JSON 对象的表中有一个字段。 json 结构中有数组对象,我们必须专门从数组中提取值。以下是json字段中的示例数据

 children:[{server:,children:[{server:,newPage:,menuType:3,label:File Tax Forms,url:\/dashboard\/fileTaxForm},{server:,newPage:,menuType:3,label:View Filed Forms,url:dashboard\/viewFiledForms}],

您能否介绍一下如何通过上述 json 对象中的 sql 查询提取值。 非常感谢您对此的任何帮助

提前致谢

【问题讨论】:

  • 您确定它是定义为jsonb 或至少定义为json 的列吗?在这种情况下,内容看起来会有所不同(主要是:所有字符串都必须用" 引用)
  • 你到底想提取什么?请edit您的问题并添加所需的输出。

标签: arrays json postgresql


【解决方案1】:

将 json 添加到您的问题时,它似乎丢失了引号。

如果JSON插入如下

INSERT INTO test VALUES ('{"children":[{"server":"","children":[{"server":"","newPage":"","menuType":3,"label":"File Tax Forms","url":"dashboard/fileTaxForm"},{"server":"","newPage":"","menuType":3,"label":"View Filed Forms","url":"dashboard/viewFiledForms"}]}]}');

放入如下定义的表中:

CREATE TABLE test (somejson json);     

那么您可以使用类似于以下的查询:

SELECT somejson::json->'children'->0->'children'->0->'label' as label, somejson::json->'children'->0->'children'->0->'url' as url  FROM test;

得到结果:

      label       |           url           
------------------+-------------------------
 "File Tax Forms" | "dashboard/fileTaxForm"

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多