[英]how to query nested array JSON in postgres?
我在POSTGRES表之一中存储了以下JSON文档结构
在该JSON中,我在嵌套数组中具有以下结构,
"product_order_reference": {
"purchase_order_number": "0007-8653547-0590"
}
我正在尝试检索具有提供的采购订单编号的JSON,我尝试在查询下面进行查询,即使它们是该采购订单编号的JSON行,查询也不返回任何内容
我试过的查询:
SELECT * from edi_records , jsonb_array_elements(valid_record :: jsonb ->'loop_id_hls') hls,jsonb_array_elements(hls->'loop_id_hlo') hlo where hlo->'product_order_reference' ->> 'purchase_order_number' = '0007-8653547-0590';
SELECT * from edi_records , jsonb_array_elements(valid_record :: jsonb ->'loop_id_hls') hls,jsonb_array_elements(hls->'loop_id_hlo') hlo where hlo ->> 'purchase_order_number' = '0007-8653547-0590';
SELECT * from edi_records , jsonb_array_elements(valid_record :: jsonb ->'advance_shipment_notice'::text->'loop_id_hls') hls,jsonb_array_elements(hls->'loop_id_hlo') hlo where hlo ->> 'purchase_order_number' = '0007-8653547-0590';
SELECT track_num from edi_records , jsonb_array_elements(valid_record :: jsonb ->'advance_shipment_notice'->'loop_id_hls') hls,jsonb_array_elements(hls->'loop_id_hlo') hlo where hlo -> 'product_order_reference'->> 'purchase_order_number' ::text = '0007-8653547-0590';
有人能帮我解决这个问题吗,我被困在这里。
我复制并粘贴了您的JSON对象。 它有点大,但是我可以得到订单号。 主要麻烦是所有嵌套数组。
缺点是我正在手动挖掘json对象。 如果结构发生更改,或者键包含重复的对象,需要进行一些搜索,那么结果将是错误的。 我相信这可以改善。
SELECT
your_json -> 'advance_shipment_notice'
-> 'loop_id_hls'
-> 0 -- {loop_id_hls}
-> 'loop_id_hlo'
-> 0 -- {loop_id_hlo}
-> 'product_order_reference'
-> 'purchase_order_number' AS purchase_order_number
FROM your_json;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.