首页 > 解决方案 > 如何从 PostgreSQL 中的 jsonb 获取特定对象?

问题描述

我有一个名为“测试”的表,其中包含两个字段“qnId”和“答案”。'qnId' 存储一个 uuid,'Answers' 是一个 jsonb 数组,大致如下所示:

[{ "user" : "1", "ans" : "some text" }, { "user" : "3", "ans": "some text"}]

如何使用 value 检索 of"ans""user"3。如何使用普通 SQL 查询检索值

标签: sqljsonpostgresqlpostgresql-9.5

解决方案


尝试这样的事情:

select
    x ->> 'ans' as user_3_ans
from
    jsonb_array_elements('[{ "user" : "1", "ans" : "some text 1" }, { "user" : "3", "ans": "some text 3"}]'::jsonb) as x
where
    x ->> 'user' = '3'

相同,但来自表:

with

table1 as (
    select
        1 as id,
        '[{ "user" : "1", "ans" : "some text 1" }, { "user" : "3", "ans": "some text 3"}]'::jsonb as answers
)

select
    id,
    answers,
    el ->> 'ans' as user_3_ans
from
    (   select
            id,
            answers,
            jsonb_array_elements(answers) as el
        from
            table1) as x
where
    el ->> 'user' = '3'

推荐阅读