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 onull
.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 quandoexpr
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.