PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verwenden von Postgres-JSON-Funktionen für Tabellenspalten

Die Ausdrücke nach select muss zu einem einzelnen Wert ausgewertet werden. Seit jsonb_to_recordset gibt eine Reihe von Zeilen und Spalten zurück, Sie können es dort nicht verwenden.

Die Lösung ist ein cross join lateral , mit dem Sie eine Zeile mithilfe einer Funktion in mehrere Zeilen erweitern können. Das gibt Ihnen einzelne Zeilen, die select wirken kann. Zum Beispiel:

select  *
from    journal j
cross join lateral
        jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where   j.id = 'ap32bbofopvo7pjgo07g'

Beachten Sie, dass #>> Betreiber gibt den Typ text zurück , und #> Der Operator gibt den Typ jsonb zurück . Als jsonb_to_recordset erwartet jsonb Als ersten Parameter verwende ich #> .

Sehen Sie, wie es auf rextester.com funktioniert