![](/img/trans.png)
[英]How to get the multiple key value pairs from jsonb object in postgresql?
[英]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.