SQL Academy
Premium
Funktionsreferenz

->

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 -> index

Parameter

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;
user_json
{"name":"Ann","tags":["sql","pg"]}

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;
first_taglast_element
sql30

Promocode aus Ereignisdaten

PostgreSQL 17.5
SELECT event_id,
	event_name,
	metadata->'promo_code' AS promo_code
FROM events
LIMIT 5;
event_idevent_namepromo_code
1app_openSUMMER20
2view_item<NULL>
3app_openNEWYEAR
4view_item<NULL>
5add_to_cartSUMMER20

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.

Siehe auch