W bazie danych Oracle JSON_ARRAYAGG() funkcja tworzy tablicę JSON z kolumny wyrażeń SQL.
Składnia
Składnia wygląda tak:
JSON_ARRAYAGG
( expr [ FORMAT JSON ] [ order_by_clause ]
[ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
[ STRICT ]
) Gdzie:
exprto dowolne wyrażenie SQL, którego wynikiem jest obiekt JSON, tablica JSON, literał numeryczny, literał tekstowy lubnull.FORMAT JSONwskazuje, że ciąg wejściowy to JSON i dlatego nie będzie cytowany w danych wyjściowych.order_by_clausepozwala uporządkować wartości JSON w tablicy JSON zwróconej przez instrukcję.JSON_on_null_clauseokreśla zachowanie do użycia, gdyexprzwraca wartość null (tj. albo dołącz wartości null do danych wyjściowych, albo nie).JSON_agg_returning_clauseokreśla typ danych ciągu znaków zwracanego przez tę funkcję.STRICTsprawdza, czy dane wyjściowe funkcji generowania JSON są poprawne w formacie JSON. Jeśli sprawdzenie się nie powiedzie, zgłaszany jest błąd składni.
Przykład
Załóżmy, że uruchamiamy następujące zapytanie SQL:
SELECT region_name
FROM regions; I zwraca następujący wynik:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Jeśli chcielibyśmy, aby wszystkie te wartości były elementami tablicy JSON, moglibyśmy przekazać nazwę kolumny do JSON_ARRAYAGG() funkcja.
Tak:
SELECT JSON_ARRAYAGG(region_name)
FROM regions; Wynik:
["Europe","Americas","Asia","Middle East and Africa"]
Uporządkuj według klauzuli
Oto przykład użycia ORDER BY klauzula w funkcji:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name DESC
)
FROM regions; Wynik:
["Middle East and Africa","Europe","Asia","Americas"]
Ten przykład posortował elementy tablicy w kolejności malejącej.
Oto w porządku rosnącym:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name ASC
)
FROM regions; Wynik:
["Americas","Asia","Europe","Middle East and Africa"]
Więcej informacji na temat tej funkcji można znaleźć w dokumentacji Oracle.