SQLite json_group_array()
функцията е агрегатна функция, която връща JSON масив, състоящ се от всички стойности в агрегирането.
С други думи, той изгражда масив от стойностите, предоставени от неговия аргумент.
Синтаксис
json_group_array(X)
Където X
представлява елемента/ите, от които ще се състои полученият масив.
Пример
Ето един прост пример за демонстрация:
SELECT json_group_array( "Fritz" );
Резултат:
["Fritz"]
Можем да видим, че е върнат масив със стойността, която предоставихме.
Истинската сила на тази функция обаче се демонстрира в сценарии, които използват обобщени данни (като в примерите за база данни по-долу). В крайна сметка можехме просто да използваме json_array()
функция за горния пример:
SELECT json_array( "Fritz" );
Резултат:
["Fritz"]
Както споменахме, истинската сила на тази функция е в работата с обобщени данни. Следователно, json_group_array()
обикновено се използва при запитване към база данни.
Пример за база данни
Да предположим, че имаме следната таблица:
SELECT * FROM Pets;
Резултат:
<пред>+-------+--------+-------+| PetId | Име на домашни любимци | TypeId |+-------+--------+-------+| 1 | Омир | 3 || 2 | Yelp | 1 || 3 | Пух | 2 || 4 | Четка | 4 |+-------+--------+-------+Виждаме, че има три колони и можем да видим имената им.
Можем да използваме json_group_array()
така:
SELECT json_group_array(TypeId)
FROM Pets;
Резултат:
[3,1,2,4]
Тук създадох масив, който се състои от всички TypeId
стойности.
Можем да отидем още по-далеч и да предадем друга JSON функция като аргумент на json_group_array()
.
Например, ако искаме да създадем JSON обект за всеки ред в базата данни, можем да използваме json_object()
функция на масата по следния начин:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Резултат:
{"PetId":1,"PetName":"Homer","TypeId":3}{"PetId":2,"PetName":"Yelp","TypeId":1}{"PetId":3,"PetName":"Fluff","TypeId":2}{"PetId":4,"PetName":"Brush","TypeId":4}
След това можем да използваме json_group_array()
функция за предоставяне на външен масив:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Резултат:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{" PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Сега всички JSON документи, създадени от json_object()
са затворени в масив, създаден от json_group_array()
.