V databázi Oracle je to JSON_ARRAYAGG()
vytvoří pole JSON ze sloupce výrazů SQL.
Syntaxe
Syntaxe vypadá takto:
JSON_ARRAYAGG
( expr [ FORMAT JSON ] [ order_by_clause ]
[ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
[ STRICT ]
)
Kde:
expr
je jakýkoli výraz SQL, který se vyhodnotí jako objekt JSON, pole JSON, číselný literál, textový literál nebonull
.FORMAT JSON
označuje, že vstupní řetězec je JSON, a proto nebude na výstupu uveden.order_by_clause
umožňuje seřadit hodnoty JSON v rámci pole JSON vráceného příkazem.JSON_on_null_clause
určuje chování, které se má použít, kdyžexpr
vyhodnotí jako null (tj. buď zahrnout hodnoty null do výstupu, nebo ne).JSON_agg_returning_clause
určuje datový typ znakového řetězce vráceného touto funkcí.STRICT
zkontroluje, zda výstup funkce generování JSON je správný JSON. Pokud kontrola selže, dojde k chybě syntaxe.
Příklad
Předpokládejme, že spustíme následující SQL dotaz:
SELECT region_name
FROM regions;
A vrátí následující výstup:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Pokud bychom chtěli, aby všechny tyto hodnoty byly prvky v poli JSON, mohli bychom předat název sloupce do JSON_ARRAYAGG()
funkce.
Takhle:
SELECT JSON_ARRAYAGG(region_name)
FROM regions;
Výsledek:
["Europe","Americas","Asia","Middle East and Africa"]
Řadit podle klauzule
Zde je příklad použití ORDER BY
klauzule ve funkci:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name DESC
)
FROM regions;
Výsledek:
["Middle East and Africa","Europe","Asia","Americas"]
Tento příklad seřadil prvky pole v sestupném pořadí.
Zde je ve vzestupném pořadí:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name ASC
)
FROM regions;
Výsledek:
["Americas","Asia","Europe","Middle East and Africa"]
Další informace o této funkci naleznete v dokumentaci Oracle.