sql >> Database >  >> RDS >> PostgreSQL

Sleutel, waarde extraheren uit json-objecten in Postgres

SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;

De functie json_each_text() is een set-retourfunctie, dus u moet deze als rijbron gebruiken. De uitvoer van de functie is hier zijwaarts samengevoegd naar de tabel q , wat betekent dat voor elke rij in de tabel, elke (key, value) paar uit de data kolom wordt alleen aan die rij toegevoegd, dus de relatie tussen de oorspronkelijke rij en de rijen gevormd uit de json object blijft behouden.

De tabel q kan ook een zeer gecompliceerde subquery zijn (of een VALUES clausule, zoals in uw vraag). In de functie wordt de juiste kolom gebruikt op basis van het resultaat van het evalueren van die subquery, dus u gebruikt alleen een verwijzing naar de alias van de subquery en de (alias van de) kolom in de subquery.



  1. Overtreft de TIME-waardelimiet van MySQL van 838:59:59

  2. MySQL trigger/procedure uitvoering vertraging

  3. Schijfruimte-implicaties van het instellen van de MySQL-kolomwaarde op NULL in plaats van 0 of ''

  4. Hoe maak ik online verbinding met de MySQL-database vanaf een andere pc? VB.NET