Przeszukałem wiele na ten temat i wciąż nie można uzyskać odpowiedzi. Używam PostgreSQL. Nazwa kolumny to "sekcje", a typ kolumny to json [] w poniższym przykładzie.Jak zdobyć elementy z tablicy Json w PostgreSQL
Moja kolumna wygląda to w bazie:
sections
[{"name" : "section1",
"attributes": [{"attrkey1": "value1",
"attrkey2": "value2"},
{"attrkey3": "value3",
"attrkey4": "value4"}]
},
{"name" : "section2",
"attributes": [{"attrkey3": "value5",
"attrkey6": "value6"},
{"attrkey1": "value7",
"attrkey8": "value8"}]
}]
To json tablicy i chcę dostać "attrkey3" w moim wyniku. Aby uzyskać konkretny klucz od Json, mogę użyć json_extract_path_text(json_column, 'json_property')
, który działa idealnie dobrze. Ale nie mam pojęcia, jak zdobyć nieruchomość od json [].
Jeśli mówię o powyższym przykładzie, chcę, aby wartość właściwości "attrkey2" była wyświetlana w moim wyniku. Wiem, że to tablica, więc może działać inaczej niż zwykle, np. wszystkie wartości mojej tablicy działałyby jak inny wiersz, więc może będę musiał napisać podkwerendę, ale nie mam pojęcia, jak to zrobić.
Ponadto nie mogę zapisać indeksu statycznie i uzyskać właściwości elementu json z określonego indeksu. Moje zapytanie zostanie wygenerowane dynamicznie, więc nigdy nie dowiem się, ile elementów znajduje się w tablicy json.
Widziałem kilka statycznych przykładów, ale nie wiem, jak je wdrożyć w moim przypadku. Czy ktoś może mi powiedzieć, jak to zrobić w zapytaniu?
Nie jestem pewien, czy masz "json []" (tablica PostgreSQL z wartościami 'json'), czy kolumna' json', która wydaje się być tablicą JSON (jak w twoim przykładzie). Proszę o wyjaśnienie. – pozs