sql >> Database teknologi >  >> RDS >> Oracle

JSON_OBJECTAGG() Funktion i Oracle

I Oracle Database er JSON_OBJECTAGG() funktion opretter et JSON-objekt fra et nøgleværdi-par.

Typisk er egenskabsnøglen, egenskabsværdien eller begge kolonner med SQL-udtryk.

Syntaks

Syntaksen ser sådan ud:

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

Hvor:

  • [ KEY ] key_expr VALUE val_expr angiver et egenskabsnøgle-værdi-par.
  • FORMAT JSON angiver, at inputstrengen er JSON, og vil derfor ikke blive citeret i outputtet.
  • JSON_on_null_clause angiver den adfærd, der skal bruges, når expr svarer til null (dvs. inkludere enten null-værdier i output eller ikke).
  • JSON_returning_clause angiver typen af ​​returværdi.
  • STRICT kontrollerer, om outputtet fra JSON-genereringsfunktionen er korrekt JSON. Hvis kontrollen mislykkes, opstår der en syntaksfejl.
  • WITH UNIQUE KEYS garanterer, at genererede JSON-objekter har unikke nøgler.

Eksempel

Her er et eksempel for at demonstrere, hvordan det virker:

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

Resultat:

{"score":37}

KEY del er valgfri, så følgende opnår samme resultat:

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

Resultat:

{"score":37}

Indlejret JSON

Hvis en af ​​de værdier, du sender, indeholder JSON, kan du bruge FORMAT JSON argument for at angive, at det indeholder JSON og ikke bør citeres i outputtet.

Eksempel:

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

Resultat:

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

Her er, hvad der sker, hvis vi fjerner FORMAT JSON del:

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

Resultat:

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

Databaseeksempel

JSON_OBJECTAGG() funktion bruges typisk til at producere JSON-dokumenter baseret på værdierne i en databasekolonne.

Antag, at vi kører følgende forespørgsel:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Resultat:

    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

Her er et eksempel på, hvordan vi kan bruge JSON_OBJECTAGG() funktion til at producere et JSON-dokument fra to af ovenstående kolonner:

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

Resultat:

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

I dette tilfælde er job_id kolonnen er nøglen, og min_salary kolonne er værdien.

Se Oracles dokumentation for en mere detaljeret forklaring af denne funktion.


  1. _gc_fusion_compression

  2. opdel søgeord til post php mysql

  3. Sådan returneres et inkrementelt gruppenummer pr. gruppe i SQL

  4. JSON_EXTRACT() – Returner data fra et JSON-dokument i MySQL