簡體   English   中英

如何從PostgreSQL中的jsonb獲取特定對象?

[英]How to get particular object from jsonb in PostgreSQL?

我有一個名為“ Test”的表,其中包含兩個字段“ qnId”和“ Answers”。 'qnId'存儲一個uuid,'Answers'是一個jsonb數組,大致如下所示:

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

如何獲取值為3"user""ans"值。 如何使用普通的SQL查詢檢索值

嘗試這樣的事情:

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'

演示:分貝<>小提琴

您可以使用jsonb_array_elements()將數組元素擴展為每一行。 之后,您可以使用->>運算符( 文檔 )過濾正確的元素:

SELECT
    uuid,
    elements ->> 'ans'
FROM
    mytable,
    jsonb_array_elements(answers) elements
WHERE 
    elements ->> 'user' = '3'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM