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

JSON_ARRAYAGG() Funzione in Oracle

In Oracle Database, il JSON_ARRAYAGG() La funzione crea un array JSON da una colonna di espressioni SQL.

Sintassi

La sintassi è questa:

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

Dove:

  • expr è qualsiasi espressione SQL che restituisce un oggetto JSON, un array JSON, un valore letterale numerico, un valore letterale di testo o null .
  • FORMAT JSON indica che la stringa di input è JSON e quindi non sarà tra virgolette nell'output.
  • order_by_clause consente di ordinare i valori JSON all'interno dell'array JSON restituito dall'istruzione.
  • JSON_on_null_clause specifica il comportamento da utilizzare quando expr restituisce null (ovvero include o meno valori null nell'output).
  • JSON_agg_returning_clause specifica il tipo di dati della stringa di caratteri restituita da questa funzione.
  • STRICT controlla se l'output della funzione di generazione JSON è JSON corretto o meno. Se il controllo fallisce, viene generato un errore di sintassi.

Esempio

Supponiamo di eseguire la seguente query SQL:

SELECT region_name
FROM regions;

E restituisce il seguente output:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Se volessimo che tutti quei valori fossero elementi in un array JSON, potremmo passare il nome della colonna a JSON_ARRAYAGG() funzione.

In questo modo:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Risultato:

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

Ordine per clausola

Ecco un esempio di utilizzo di ORDER BY clausola all'interno della funzione:

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

Risultato:

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

Quell'esempio ha ordinato gli elementi dell'array in ordine decrescente.

Eccolo in ordine crescente:

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

Risultato:

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

Consulta la documentazione di Oracle per ulteriori informazioni su questa funzione.