我正在处理一个包含一列嵌套和多个 jsonb 对象的 PostgreSQL 11 表
模拟问题:-
CREATE TABLE public.test
(
id integer NOT NULL DEFAULT nextval('test_id_seq'::regclass),
testcol jsonb
)
insert into test (testcol) values
('[{"type": {"value": 1, "displayName": "flag1"}, "value": "10"},
{"type": {"value": 2, "displayName": "flag2"}, "value": "20"},
{"type": {"value": 3, "displayName": "flag3"}, "value": "30"},
{"type": {"value": 4, "displayName": "flag4"}},
{"type": {"value": 4, "displayName": "flag4"}},
{"type": {"value": 6, "displayName": "flag6"}, "value": "40"}]');
我正在尝试:
- 如果类型=特定值,则获取外部值。例如如果 flag3 在显示名称中,则获取值 30。
- 计算内部 json 中 flag4 的出现次数
最佳答案
您可以使用 json_to_recordset
来解析它:
WITH cte AS (
SELECT test.id, sub."type"->'value' AS t_value, sub."type"->'displayName' AS t_name, value
FROM test
,LATERAL jsonb_to_recordset(testcol) sub("type" jsonb, "value" int)
)
SELECT *
FROM cte
-- WHERE ...
-- GROUP BY ...;
关于json - 如何查询jsonb的嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307119/