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

JSON_ARRAYAGG() Funktion i Oracle

I Oracle Database er JSON_ARRAYAGG() funktion opretter et JSON-array fra en kolonne med SQL-udtryk.

Syntaks

Syntaksen ser sådan ud:

JSON_ARRAYAGG
  ( expr [ FORMAT JSON ]  [ order_by_clause ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] 
  )

Hvor:

  • expr er ethvert SQL-udtryk, der evalueres til et JSON-objekt, et JSON-array, en numerisk literal, en tekstliteral eller null .
  • FORMAT JSON angiver, at inputstrengen er JSON, og vil derfor ikke blive citeret i outputtet.
  • order_by_clause giver dig mulighed for at bestille JSON-værdierne inden for JSON-arrayet, der returneres af sætningen.
  • JSON_on_null_clause angiver den adfærd, der skal bruges, når expr evalueres til null (dvs. inkludere enten null-værdier i output eller ikke).
  • JSON_agg_returning_clause angiver datatypen for tegnstrengen, der returneres af denne funktion.
  • STRICT kontrollerer, om outputtet fra JSON-genereringsfunktionen er korrekt JSON. Hvis kontrollen mislykkes, opstår der en syntaksfejl.

Eksempel

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

SELECT region_name
FROM regions;

Og det returnerer følgende output:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Hvis vi ønskede, at alle disse værdier skulle være elementer i et JSON-array, kunne vi videregive kolonnenavnet til JSON_ARRAYAGG() funktion.

Sådan:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Resultat:

["Europe","Americas","Asia","Middle East and Africa"]

Bestil efter klausul

Her er et eksempel på brug af ORDER BY klausul i funktionen:

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name DESC
    )
FROM regions;

Resultat:

["Middle East and Africa","Europe","Asia","Americas"]

Dette eksempel sorterede array-elementerne i faldende rækkefølge.

Her er det i stigende rækkefølge:

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name ASC
    )
FROM regions;

Resultat:

["Americas","Asia","Europe","Middle East and Africa"]

Se Oracle-dokumentationen for mere information om denne funktion.


  1. Administrer MySQL med phpMyAdmin på Ubuntu 10.10 (Maverick)

  2. Alt du behøver at vide om SQL CTE på ét sted

  3. Nærmest match, del 3

  4. Oracle Big Data SQL