首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgresSQL JSON查询

PostgresSQL JSON查询
EN

Stack Overflow用户
提问于 2018-12-14 07:53:31
回答 1查看 147关注 0票数 0

我将json存储在具有以下结构的列(oid)中:

代码语言:javascript
复制
{
  "fullName": "test test",
  "personDetails": {
    "address": "Advisor",
    "phoneNumber": "clare.railton@heptonstalls.co.uk"
  },
  "id": "6765788-yt67",
  "submittedDocument": {
    "answers": [
      {
        "questionId": "2",
        "responses": [
          {
            "value": "123456"
          }
        ]
      },
      {
        "questionId": "2.1",
        "responses": [
          {
            "IdA": 1,
            "IdB": 1,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 2,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 3,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 4,
            "value": "true"
          }
        ]
      }
    ]
},
    "date": "2018-11-22",
    "PeriodId": 123456
}

如何获得所有问题数字的响应值?我已经设法使用lo_get函数从oid列中获得了json结构,但我正在努力获取所需的值。

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 09:21:56

您确定想要一个大对象来存储json数据吗?Postgres可以处理表中的json列类型:

代码语言:javascript
复制
CREATE TABLE test_json (id INTEGER PRIMARY KEY, json json);
INSERT INTO test_json VALUES(1,'{
  "fullName": "test test",
  "personDetails": {
    "address": "Advisor",
    "phoneNumber": "clare.railton@heptonstalls.co.uk"
  },
  "id": "6765788-yt67",
  "submittedDocument": {
    "answers": [
      {
        "questionId": "2",
        "responses": [
          {
            "value": "123456"
          }
        ]
      },
      {
        "questionId": "2.1",
        "responses": [
          {
            "IdA": 1,
            "IdB": 1,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 2,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 3,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 4,
            "value": "true"
          }
        ]
      }
    ]
},
    "date": "2018-11-22",
    "PeriodId": 123456
}');

SELECT json_extract_path(
json_array_elements(
json_extract_path(
json_array_elements(
json_extract_path((json),'submittedDocument','answers')
),'responses')
),'value'
)FROM test_json;

请参见:

https://www.postgresql.org/docs/current/functions-json.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53771729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档