create table test(a json);
insert into test(a)
values('{"orders":[{"orderId":1}, {"orderId":2, "status":"done"}, {"orderId":3}]}');
鉴于上面的结构,我可以得到一个未完成的数组或一组orderIds&#39 ;?那么,我的意思是我可以用sql或plpgsql获取orderIds吗?
任何建议都会很棒!非常感谢你!
答案 0 :(得分:8)
一旦我修复了完全破坏的json,这只是一个LATERAL
查询来解压缩数组并过滤它。
select (x->>'orderId')::integer
from test,
json_array_elements(a->'orders') x
where (x ->> 'status') IS DISTINCT FROM 'done';
我使用了IS DISTINCT FROM
,因此我无需测试NULL
(无密钥)和!= 'done'
。