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 ellernull
.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årexpr
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.