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:
expr
to dowolne wyrażenie SQL, którego wynikiem jest obiekt JSON, tablica JSON, literał numeryczny, literał tekstowy lubnull
.FORMAT JSON
wskazuje, że ciąg wejściowy to JSON i dlatego nie będzie cytowany w danych wyjściowych.order_by_clause
pozwala uporządkować wartości JSON w tablicy JSON zwróconej przez instrukcję.JSON_on_null_clause
określa zachowanie do użycia, gdyexpr
zwraca wartość null (tj. albo dołącz wartości null do danych wyjściowych, albo nie).JSON_agg_returning_clause
określa typ danych ciągu znaków zwracanego przez tę funkcję.STRICT
sprawdza, 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.