I Oracle Database, JSON_ARRAYAGG()
funktionen skapar en JSON-array från en kolumn med SQL-uttryck.
Syntax
Syntaxen ser ut så här:
JSON_ARRAYAGG
( expr [ FORMAT JSON ] [ order_by_clause ]
[ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
[ STRICT ]
)
Var:
expr
är vilket SQL-uttryck som helst som utvärderas till ett JSON-objekt, en JSON-array, en numerisk literal, en text literal ellernull
.FORMAT JSON
indikerar att indatasträngen är JSON och kommer därför inte att citeras i utdata.order_by_clause
låter dig beställa JSON-värdena inom JSON-matrisen som returneras av satsen.JSON_on_null_clause
anger beteendet som ska användas närexpr
utvärderas till null (dvs. inkluderar antingen nollvärden i utdata eller inte).JSON_agg_returning_clause
anger datatypen för teckensträngen som returneras av den här funktionen.STRICT
kontrollerar om utdata från JSON-genereringsfunktionen är korrekt JSON. Om kontrollen misslyckas uppstår ett syntaxfel.
Exempel
Anta att vi kör följande SQL-fråga:
SELECT region_name
FROM regions;
Och det returnerar följande utdata:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Om vi ville att alla dessa värden skulle vara element i en JSON-array kunde vi skicka kolumnnamnet till JSON_ARRAYAGG()
funktion.
Så här:
SELECT JSON_ARRAYAGG(region_name)
FROM regions;
Resultat:
["Europe","Americas","Asia","Middle East and Africa"]
Beställ enligt klausul
Här är ett exempel på hur du använder ORDER BY
sats i funktionen:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name DESC
)
FROM regions;
Resultat:
["Middle East and Africa","Europe","Asia","Americas"]
Det exemplet sorterade arrayelementen i fallande ordning.
Här är det i stigande ordning:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name ASC
)
FROM regions;
Resultat:
["Americas","Asia","Europe","Middle East and Africa"]
Se Oracle-dokumentationen för mer information om den här funktionen.