sql >> Database >  >> RDS >> PostgreSQL

Hoe rijen te filteren op geneste waarden in een json-kolom?

Uw vraag is dichtbij. json_each() is de sleutelfunctie. Of jsonb_each() voor jsonb . Een paar verbeteringen:

SELECT *
FROM   things t
WHERE  EXISTS (
   SELECT FROM json_each(t.blueprint) b
   WHERE  b.value->>'name' ILIKE 'azamund'
   );

Oude sqlfiddle
db<>fiddle hier

Alternatief met JSON-array

Je hebt mijn gerelateerde antwoord voor JSON-arrays al gezien:

Hoewel de query voor geneste JSON-objecten net zo eenvoudig lijkt, is er superieure indexondersteuning voor de array:

Kan eenvoudiger / efficiënter worden met SQL/JSON in Postgres 12 ...



  1. ActiveRecord gebruiken om complexe relaties in Rails tot stand te brengen

  2. Big Query-variabelen instellen, zoals mysql

  3. Verbindingsfout tijdens het verbinden met PostgreSQL als postgres-gebruiker?

  4. Is er een truc om MySQL toe te staan ​​een volgkomma in de SET-clausule van een UPDATE-instructie te negeren?