簡體   English   中英

如何在postgres db中包含JSON數組的列內查詢

[英]How to query inside a column containg JSON array in postgres db

我在 postgres 數據庫中有一張桌子。 在該表中,我有一列包含 JSON 數組

{
            "DeviceId": "12355",
            "Message": {
                        "Test1": [{"Name": "1"}, {"Result": "Pass"}],
                        "Test2":[{"Name": "2"}, {"Result": "Fail"}],
                        "Test3": [{"Name": "3"}, {"Result": "Pass"}],
                        
            }
}

我需要在里面查詢,我希望我的 output 采用以下格式。

DeviceID     Name   Result  
  "12355"    "1"   "Pass"     
  "12355"    "2"   "Fail" 
  "12355"    "3"   "Pass" 

以下是我嘗試過的查詢

select DeviceId, Message  -> 'Name' as name, Message  -> 'Result' as Result from table

結果並不如預期

我是 postgres DB 的新手,任何人都可以幫助我。 提前致謝

演示:db<>小提琴

SELECT
    mydata ->> 'DeviceId' as device_id,
    tests.value -> 0 ->> 'Name' as name,
    tests.value -> 1 ->> 'Result' as result
FROM mytable,
    json_each(mydata -> 'Message') as tests

您可以使用json_each()Message中的所有數據提取到每個元素的一行中。 之后,您可以訪問數組元素。

但是,您的結構似乎設計得不是很好。 代替

"Test1" : [{"Name": "1"}, {"Result": "Pass"}]

你應該想到

"Test1" : {"Name": "1", "Result": "Pass"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM