sql >> Databasteknik >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

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() .


  1. Vad är skillnaden mellan 'ÅÅÅÅ' och 'RRRR' i Oracle SQL

  2. Hur man startar PostgreSQL Server på Mac OS X via Homebrew

  3. 5 sätt att kontrollera om en tabell finns i MySQL

  4. Hur man eliminerar icke-arbetstid i Oracle