sql >> Database >  >> RDS >> PostgreSQL

Hoe voer ik een query uit met behulp van velden in het nieuwe PostgreSQL JSON-gegevenstype?

Postgres 9.2

Ik citeer Andrew Dunstan op de pgsql-hackerslijst:

Op een bepaald moment zullen er mogelijk enkele json-verwerkingsfuncties (in tegenstelling tot json-producerende) functies zijn, maar niet in 9.2.

Het belet hem niet om een ​​voorbeeldimplementatie in PLV8 te geven die uw probleem zou moeten oplossen. (Link is nu dood, zie in plaats daarvan moderne PLV8.)

Postgres 9.3

Biedt een arsenaal aan nieuwe functies en operators om "json-processing" toe te voegen.

  • De handleiding over nieuwe JSON-functionaliteit.
  • De Postgres Wiki over nieuwe functies in pg 9.3.

Het antwoord op de oorspronkelijke vraag in Postgres 9.3:

SELECT *
FROM   json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ]'
  ) AS elem
WHERE elem->>'name' = 'Toby';

Geavanceerd voorbeeld:

  • Querycombinaties met geneste reeks records in JSON-gegevenstype

Voor grotere tabellen wilt u misschien een expressie-index toevoegen om de prestaties te verbeteren:

  • Index voor het vinden van een element in een JSON-array

Postgres 9.4

Voegt jsonb . toe (b voor "binair", waarden worden opgeslagen als native Postgres-typen) en nog meer functionaliteit voor beide soorten. Naast de hierboven genoemde expressie-indexen, jsonb ondersteunt ook GIN-, btree- en hash-indexen, waarvan GIN de krachtigste is.

  • De handleiding over json en jsonb gegevenstypen en functies.
  • De Postgres Wiki op JSONB op pg 9.4

De handleiding gaat zelfs zo ver als te suggereren:

Over het algemeen zouden de meeste applicaties de voorkeur moeten geven aan het opslaan van JSON-gegevens alsjsonb , tenzij er heel gespecialiseerde behoeften zijn, zoals oude veronderstellingen over het bestellen van objectsleutels.

Vetgedrukte nadruk van mij.

Prestatievoordelen van algemene verbeteringen aan GIN-indexen.

Postgres 9.5

Voltooi jsonb functies en operators. Voeg meer functies toe om jsonb te manipuleren op zijn plaats en voor weergave.

  • Belangrijk goed nieuws in de release notes van Postgres 9.5.


  1. Hoe kan ik Date Datatype gebruiken in SQL Server?

  2. SQL Server SHOWPLAN_ALL

  3. Hoe Now() werkt in PostgreSQL

  4. Wat is er nieuw in SQL Server 2019?