[英]Get data from jsonb field array
我在PostgreSQL數據庫中具有以下架構:
CREATE TABLE survey_results (
id integer NOT NULL,
raw jsonb DEFAULT '{}'::jsonb,
created_at timestamp without time zone,
updated_at timestamp without time zone
);
INSERT INTO survey_results (id, raw, created_at, updated_at)
VALUES (1, '{ "slides": [{"id": "1", "name": "Test", "finished_at": 1517421628092}, {"id": "2", "name": "Test", "finished_at": 1517421894736}]}', now(), now());
我想從raw['slides']
獲取數據。 我想查詢返回每個raw['slides'] id
和raw['slides'] finished_at
。 因此查詢結果應如下所示:
id finished_at
1 1517421628092
2 1517421894736
這是sqlfiddle可以嘗試的:
http://sqlfiddle.com/#!17/ae504
如何在PostgreSQL中做到這一點?
您需要取消嵌套數組,然后可以訪問每個元素:
select s.slide ->> 'id' as id,
s.slide ->> 'finished_at' as finished_at
from survey_results, jsonb_array_elements(raw -> 'slides') as s (slide)
http://sqlfiddle.com/#!17/ae504/80
有關更多詳細信息,請參見手冊中的JSON函數和運算符 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.