->
SQL-Konstrukt
Entsprechung in MySQL:
Holt einen Wert aus JSON über einen Objektschlüssel oder eine Array-Elementnummer und gibt ihn als JSON zurück.
PostgreSQL 17.5
json -> key
json -> indexParameter
- jsonjson | jsonb
- Wert vom Typ json oder jsonb
- keytext
- Objektschlüssel
- indexinteger
- Nummer des Array-Elements ab 0; eine negative zählt vom Ende
Rückgabewert
Wert vom Typ json oder jsonb; NULL, wenn Schlüssel oder Element fehlen
Beispiele
Verschachteltes Objekt
PostgreSQL 17.5
SELECT '{"user": {"name": "Ann", "tags": ["sql", "pg"]}}'::jsonb->'user' AS user_json;Kette von Operatoren und ein Element vom Ende
PostgreSQL 17.5
SELECT '{"user": {"name": "Ann", "tags": ["sql", "pg"]}}'::jsonb->'user'->'tags'->0 AS first_tag,
'[10, 20, 30]'::jsonb->-1 AS last_element;Promocode aus Ereignisdaten
PostgreSQL 17.5
SELECT event_id,
event_name,
metadata->'promo_code' AS promo_code
FROM events
LIMIT 5;Details
Das Ergebnis ist weiterhin JSON, deshalb lassen sich die Operatoren verketten: data -> 'user' -> 'tags' -> 0. Im letzten Schritt, wenn du einfachen Text brauchst, verwendest du ->>.
Fehlt der Schlüssel, ist das Ergebnis NULL, kein Fehler. Einen String mit JSON musst du ausdrücklich umwandeln: '{...}'::jsonb.