Wie man ein JSON-Array in Postgres in Zeilen umwandelt

10

Ich habe ein JSON-Array in meiner Postgres-Datenbank gespeichert. Der JSon sieht so aus:

%Vor%

Jetzt muss ich das Array so auswählen, dass sich jedes Element in einer anderen Zeile des Abfrageergebnisses befindet. Daher muss die SELECT-Anweisung, die ich ausführe, die Daten auf diese Weise zurückgeben:

%Vor%

Ich habe versucht, die Funktion unnest()

zu verwenden %Vor%

akzeptiert jedoch nicht den jsonb -Typ

    
k4ppa 23.03.2016, 09:57
quelle

2 Antworten

11

Ich poste die Antwort, die ursprünglich von pozs geschrieben wurde, in den Kommentarbereich.

unnest() steht für die Array-Typen von PostgreSQL.

Stattdessen kann eine der folgenden Funktionen verwendet werden:

  • json_array_elements(json) (9.3 +)
  • jsonb_array_elements(jsonb) (9.4 +)
  • json[b]_array_elements_text(json[b]) (9.4 +)

Beispiel :

%Vor%

Ausgabewert

%Vor%

Hier finden Sie die Dokumentation für Version 9.4.

>     
k4ppa 14.09.2016, 10:26
quelle
8

Ich würde vorschlagen, den Befehl json_to_recordset in Ihrem Fall zu verwenden. Ihre SQL sollte dann sein:

%Vor%

Die Ausgabe ist:

%Vor%

Die Spalten (oder JSON-Schlüssel) des Beispiels können frei weiter erweitert werden.

    
user2080851 25.05.2016 18:34
quelle

Tags und Links