SQLite json_group_array()
funktion är en aggregerad funktion som returnerar en JSON-array som består av alla värden i aggregeringen.
Med andra ord, den konstruerar en array från de värden som tillhandahålls av dess argument.
Syntax
json_group_array(X)
Där X
representerar elementet/erna som den resulterande arrayen kommer att bestå av.
Exempel
Här är ett enkelt exempel att visa:
SELECT json_group_array( "Fritz" );
Resultat:
["Fritz"]
Vi kan se att en array returnerades, med värdet vi angav.
Den verkliga kraften hos denna funktion visas dock i scenarier som använder aggregerad data (som i databasexemplen nedan). När allt kommer omkring kunde vi bara ha använt json_array()
funktion för exemplet ovan:
SELECT json_array( "Fritz" );
Resultat:
["Fritz"]
Som nämnts ligger den verkliga kraften i denna funktion i hanteringen av aggregerad data. Därför json_group_array()
skulle vanligtvis användas när du söker efter en databas.
Databasexempel
Anta att vi har följande tabell:
SELECT * FROM Pets;
Resultat:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Vi kan se att det finns tre kolumner, och vi kan se deras namn.
Vi kan använda json_group_array()
så här:
SELECT json_group_array(TypeId)
FROM Pets;
Resultat:
[3,1,2,4]
Här skapade jag en array som består av alla TypeId
värden.
Vi kan gå ett steg längre och skicka ytterligare en JSON-funktion som argument till json_group_array()
.
Om vi till exempel vill skapa ett JSON-objekt för varje rad i databasen kan vi använda json_object()
fungerar på bordet så här:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Resultat:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Vi kan sedan använda json_group_array()
funktion för att tillhandahålla en yttre array:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Resultat:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Nu, alla JSON-dokument som producerades av json_object()
är inneslutna i en array som producerades av json_group_array()
.