->
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.9
json -> key
json -> index- json
- Wert vom Typ json oder jsonbjson | jsonb
- key
- Objektschlüsseltext
- index
- Nummer des Array-Elements ab 0; eine negative zählt vom Endeinteger
Rückgabewert
Wert vom Typ json oder jsonb; NULL, wenn Schlüssel oder Element fehlen
Beispiele
Verschachteltes Objekt
PostgreSQL 17.9
SELECT '{"user": {"name": "Ann", "tags": ["sql", "pg"]}}'::jsonb->'user' AS user_json;Kette von Operatoren und ein Element vom Ende
PostgreSQL 17.9
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.9
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.