sql >> Database >  >> RDS >> Oracle

JSON_ARRAYAGG() Functie in Oracle

In Oracle Database, de JSON_ARRAYAGG() functie maakt een JSON-array uit een kolom met SQL-expressies.

Syntaxis

De syntaxis gaat als volgt:

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

Waar:

  • expr is een SQL-expressie die evalueert naar een JSON-object, een JSON-array, een numerieke letterlijke waarde, een letterlijke tekst of null .
  • FORMAT JSON geeft aan dat de invoerreeks JSON is en daarom niet in de uitvoer wordt geciteerd.
  • order_by_clause stelt u in staat om de JSON-waarden te ordenen binnen de JSON-array die door de instructie wordt geretourneerd.
  • JSON_on_null_clause specificeert het gedrag dat moet worden gebruikt wanneer expr evalueert naar null (d.w.z. neem null-waarden op in de uitvoer of niet).
  • JSON_agg_returning_clause specificeert het gegevenstype van de tekenreeks die door deze functie wordt geretourneerd.
  • STRICT controleert of de uitvoer van de JSON-generatiefunctie de juiste JSON is. Als de controle mislukt, wordt er een syntaxisfout gegenereerd.

Voorbeeld

Stel dat we de volgende SQL-query uitvoeren:

SELECT region_name
FROM regions;

En het geeft de volgende output:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Als we willen dat al die waarden elementen in een JSON-array zijn, kunnen we de kolomnaam doorgeven aan de JSON_ARRAYAGG() functie.

Zoals dit:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Resultaat:

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

Bestel per clausule

Hier is een voorbeeld van het gebruik van de ORDER BY clausule binnen de functie:

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

Resultaat:

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

Dat voorbeeld sorteerde de array-elementen in aflopende volgorde.

Hier is het in oplopende volgorde:

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

Resultaat:

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

Zie de Oracle-documentatie voor meer informatie over deze functie.


  1. Waarom kan ik geen alias gebruiken in een DELETE-instructie?

  2. Wat doet SUBSIDIEGEBRUIK OP SCHEMA precies?

  3. Kolomnaam of aantal opgegeven waarden komt niet overeen met tabeldefinitie

  4. Oracle Database Security:Database Auditing