SQLite json_group_array()
funktion er en aggregeret funktion, der returnerer et JSON-array, der består af alle værdier i aggregeringen.
Med andre ord, den konstruerer en matrix ud fra de værdier, som dens argument giver.
Syntaks
json_group_array(X)
Hvor X
repræsenterer det/de elementer, som det resulterende array vil bestå af.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT json_group_array( "Fritz" );
Resultat:
["Fritz"]
Vi kan se, at et array blev returneret med den værdi, vi har angivet.
Den sande kraft af denne funktion er imidlertid demonstreret i scenarier, der bruger aggregerede data (som i databaseeksemplerne nedenfor). Vi kunne trods alt bare have brugt json_array()
funktion for ovenstående eksempel:
SELECT json_array( "Fritz" );
Resultat:
["Fritz"]
Som nævnt er denne funktions sande kraft i håndteringen af aggregerede data. Derfor json_group_array()
vil typisk blive brugt, når du forespørger i en database.
Databaseeksempel
Antag, at vi har følgende tabel:
SELECT * FROM Pets;
Resultat:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Vi kan se, at der er tre kolonner, og vi kan se deres navne.
Vi kan bruge json_group_array()
sådan her:
SELECT json_group_array(TypeId)
FROM Pets;
Resultat:
[3,1,2,4]
Her oprettede jeg et array, der består af alle TypeId
værdier.
Vi kan gå et skridt videre og videregive en anden JSON-funktion som argument til json_group_array()
.
For eksempel, hvis vi ønskede at producere et JSON-objekt for hver række i databasen, kunne vi bruge json_object()
funktion på bordet sådan her:
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 derefter bruge json_group_array()
funktion til at give et ydre 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, alle JSON-dokumenter, der blev produceret af json_object()
er indesluttet i et array, der blev produceret af json_group_array()
.