В Oracle Database, JSON_ARRAYAGG()
функцията създава JSON масив от колона от SQL изрази.
Синтаксис
Синтаксисът е така:
JSON_ARRAYAGG
( expr [ FORMAT JSON ] [ order_by_clause ]
[ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
[ STRICT ]
)
Къде:
expr
е всеки SQL израз, който се оценява на JSON обект, JSON масив, числов литерал, текстов литерал илиnull
.FORMAT JSON
показва, че входният низ е JSON и следователно няма да бъде в кавички в изхода.order_by_clause
ви позволява да подреждате стойностите на JSON в JSON масива, върнат от израза.JSON_on_null_clause
определя поведението, което да се използва, когатоexpr
оценява на null (т.е. или включва нулеви стойности в изхода, или не).JSON_agg_returning_clause
определя типа данни на низа от символи, върнат от тази функция.STRICT
проверява дали изходът на функцията за генериране на JSON е правилен JSON. Ако проверката не успее, се появява синтактична грешка.
Пример
Да предположим, че изпълняваме следната SQL заявка:
SELECT region_name
FROM regions;
И връща следния изход:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Ако искаме всички тези стойности да бъдат елементи в JSON масив, бихме могли да предадем името на колоната на JSON_ARRAYAGG()
функция.
Като това:
SELECT JSON_ARRAYAGG(region_name)
FROM regions;
Резултат:
["Europe","Americas","Asia","Middle East and Africa"]
Поръчай по клауза
Ето пример за използване на ORDER BY
клауза във функцията:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name DESC
)
FROM regions;
Резултат:
["Middle East and Africa","Europe","Asia","Americas"]
Този пример сортира елементите на масива в низходящ ред.
Ето го във възходящ ред:
SELECT JSON_ARRAYAGG(
region_name ORDER BY region_name ASC
)
FROM regions;
Резултат:
["Americas","Asia","Europe","Middle East and Africa"]
Вижте документацията на Oracle за повече информация относно тази функция.