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 ofnull
.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 wanneerexpr
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.