Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL JSON vs. JSONB

PostgreSQL bietet JSON-Funktionen zur Bearbeitung und Abfrage von JSON-Daten, die in der Datenbank gespeichert sind. Diese Funktionen sind für den Umgang mit JSON- und JSONB-Datentypen unerlässlich und ermöglichen es den Nutzern, JSON-Inhalte effektiv zu extrahieren und zu manipulieren.

Verwendung

Die JSON-Funktionen in PostgreSQL dienen dem Zugriff und der Bearbeitung von JSON- und JSONB-Datentypen, die sich ideal für die Speicherung halbstrukturierter Daten eignen. Diese Funktionen ermöglichen Operationen wie das Extrahieren von Elementen, das Konvertieren von Datenformaten und den Musterabgleich.

sql
-- Extracting a JSON object field by key
SELECT json_column -> 'key' FROM table_name;

-- Extracting a JSONB object field by key
SELECT jsonb_column -> 'key' FROM table_name;

In diesen Syntaxen wird `->` verwendet, um ein JSON-Objekt zu extrahieren, während `->>` verwendet wird, um einen Textwert aus einer JSON- oder JSONB-Spalte zu extrahieren.

Zusätzliche JSON-Funktionen

Hier sind einige zusätzliche Funktionen, die nützlich sein können:

  • `jsonb_set`: Aktualisiert Werte innerhalb eines JSONB-Dokuments.
  • `jsonb_insert`: Fügt einen neuen Wert in ein JSONB-Dokument an einem angegebenen Pfad ein.
  • `jsonb_path_query`: Extrahiert JSONB-Werte, die einer angegebenen JSONPath-Abfrage entsprechen.

Beispiele

1. Extrahieren eines JSON-Feldes

sql
SELECT data -> 'name' AS name
FROM users;

Dieses Beispiel extrahiert den Wert des Feldes "Name" aus der JSON-Spalte "Daten" in der Tabelle "Benutzer".

2. JSON in JSONB umwandeln

sql
SELECT data::jsonb
FROM users;

Hier wird eine JSON-Spalte in JSONB umgewandelt, was Vorteile wie Speichereffizienz, Leistungsverbesserungen und eine effizientere Indizierung und Abfrage mit sich bringt.

3. Komplexe Abfrage mit JSONB

sql
SELECT id, jsonb_array_elements(data->'items')->>'product_name' AS product_name
FROM orders;

Diese Abfrage extrahiert "Produktname" aus jedem Element im Array "Artikel" in der JSONB-Spalte "Daten".

Tipps und bewährte Praktiken

  • Wähle JSONB aus Gründen der Effizienz. JSONB ist im Allgemeinen schneller bei der Abfrage und Indizierung und bietet im Vergleich zu JSON eine bessere Speichereffizienz.
  • Verwende geeignete Operatoren. Mache dich mit JSON-Operatoren wie `->`, `->>` und `#>>` vertraut, um Daten zu extrahieren und zu manipulieren. Zum Beispiel extrahiert `->` ein JSON-Objekt, während `->>` einen Textwert extrahiert.
  • JSONB-Spalten indizieren. Erstelle Indizes für JSONB-Spalten, um Suchvorgänge zu beschleunigen.
  • Validiere deine JSON-Daten. Stelle sicher, dass die JSON-Daten gültig sind, bevor du sie in die Datenbank einfügst, um Laufzeitfehler zu vermeiden.
  • Verwende JSON-Funktionen mit Bedacht. JSON-Funktionen sind zwar mächtig, können aber leistungsintensiv sein; verwende sie nur, wenn es nötig ist.
  • Wann sollte man JSON gegenüber JSONB bevorzugen? Entscheide dich für JSON, wenn die ursprüngliche Formatierung und Reihenfolge der Schlüssel für deinen Anwendungsfall wichtig sind.

Zusammenfassung der JSON-Operatoren

Betreiber Beschreibung
`->` Extrahiert JSON-Objekt
`->>` Extrahiert einen Textwert aus JSON
`#>>` Extrahiert Textwerte mithilfe von Pfadelementen