sql >> Database >  >> RDS >> Oracle

JSON_OBJECTAGG() Functie in Oracle

In Oracle Database, de JSON_OBJECTAGG() functie maakt een JSON-object van een sleutel-waardepaar.

Gewoonlijk zijn de eigenschapssleutel, de eigenschapswaarde of beide kolommen met SQL-expressies.

Syntaxis

De syntaxis gaat als volgt:

JSON_OBJECTAGG
  ( [ KEY ] string VALUE expr [ FORMAT JSON ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] [ WITH UNIQUE KEYS ]
  )

Waar:

  • [ KEY ] key_expr VALUE val_expr specificeert een sleutel/waarde-paar van een eigenschap.
  • FORMAT JSON geeft aan dat de invoerreeks JSON is en daarom niet in de uitvoer wordt geciteerd.
  • JSON_on_null_clause specificeert het gedrag dat moet worden gebruikt wanneer expr is gelijk aan null (d.w.z. neem null-waarden op in de uitvoer of niet).
  • JSON_returning_clause specificeert het type retourwaarde.
  • STRICT controleert of de uitvoer van de JSON-generatiefunctie de juiste JSON is. Als de controle mislukt, wordt er een syntaxisfout gegenereerd.
  • WITH UNIQUE KEYS garandeert dat gegenereerde JSON-objecten unieke sleutels hebben.

Voorbeeld

Hier is een voorbeeld om te laten zien hoe het werkt:

SELECT JSON_OBJECTAGG(KEY 'score' VALUE 37) FROM DUAL;

Resultaat:

{"score":37}

De KEY deel is optioneel, dus met het volgende wordt hetzelfde resultaat bereikt:

SELECT JSON_OBJECTAGG('score' VALUE 37) FROM DUAL;

Resultaat:

{"score":37}

Geneste JSON

Als een van de waarden die u doorgeeft JSON bevat, kunt u de FORMAT JSON . gebruiken argument om aan te geven dat het JSON bevat en niet in de uitvoer mag worden aangehaald.

Voorbeeld:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}' 
    FORMAT JSON
    ) 
FROM DUAL;

Resultaat:

{"details":{"name": "Peter", "score": 64}}

Dit gebeurt er als we de FORMAT JSON verwijderen deel:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}'
    ) 
FROM DUAL;

Resultaat:

{"details":"{\"name\": \"Peter\", \"score\": 64}"} 

Databasevoorbeeld

De JSON_OBJECTAGG() functie wordt meestal gebruikt om JSON-documenten te produceren op basis van de waarden in een databasekolom.

Stel dat we de volgende query uitvoeren:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Resultaat:

    JOB_ID                        JOB_TITLE    MIN_SALARY    MAX_SALARY 
__________ ________________________________ _____________ _____________ 
AD_PRES    President                                20000         40000 
AD_VP      Administration Vice President            15000         30000 
SA_MAN     Sales Manager                            10000         20000

Hier is een voorbeeld van hoe we de JSON_OBJECTAGG() . kunnen gebruiken functie om een ​​JSON-document te maken uit twee van de bovenstaande kolommen:

SELECT JSON_OBJECTAGG(KEY job_id VALUE min_salary) 
FROM jobs
WHERE min_salary > 9000;

Resultaat:

{"AD_PRES":20000,"AD_VP":15000,"SA_MAN":10000}

In dit geval is de job_id kolom is de sleutel, en de min_salary kolom is de waarde.

Zie de documentatie van Oracle voor een meer gedetailleerde uitleg van deze functie.


  1. Wat doet deze query om een ​​door komma's gescheiden lijst van SQL Server te maken?

  2. Alle uitgeschakelde beperkingen voor externe sleutels in SQL Server retourneren (T-SQL-voorbeeld)

  3. Afbeelding weergeven uit PostgreSQL-database, bytea

  4. Verbinding maken met de database met behulp van de NaviCat MySQL-client