sql >> Databáze >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

SQLite json_group_array() funkce je agregační funkce, která vrací pole JSON složené ze všech hodnot v agregaci.

Jinými slovy, zkonstruuje pole z hodnot poskytnutých jeho argumentem.

Syntaxe

json_group_array(X)

Kde X představuje prvek/prvky, ze kterých se bude výsledné pole skládat.

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT json_group_array( "Fritz" );

Výsledek:

["Fritz"]

Vidíme, že bylo vráceno pole s hodnotou, kterou jsme poskytli.

Skutečná síla této funkce je však demonstrována ve scénářích, které využívají agregovaná data (jako v příkladech databáze níže). Koneckonců, mohli jsme použít json_array() funkce pro výše uvedený příklad:

SELECT json_array( "Fritz" );

Výsledek:

["Fritz"]

Jak již bylo zmíněno, skutečná síla této funkce je v práci s agregovanými daty. Proto json_group_array() se obvykle používá při dotazování na databázi.

Příklad databáze

Předpokládejme, že máme následující tabulku:

SELECT * FROM Pets;

Výsledek:

+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Vidíme, že existují tři sloupce a vidíme jejich názvy.

Můžeme použít json_group_array() takhle:

SELECT json_group_array(TypeId)
FROM Pets;

Výsledek:

[3,1,2,4]

Zde jsem vytvořil pole, které se skládá ze všech TypeId hodnoty.

Můžeme jít o krok dále a předat další funkci JSON jako argument funkci json_group_array() .

Pokud bychom například chtěli vytvořit objekt JSON pro každý řádek v databázi, mohli bychom použít json_object() fungovat na stole takto:

SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Výsledek:

{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Pak můžeme použít json_group_array() funkce poskytující vnější pole:

SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Výsledek:

[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

Nyní všechny dokumenty JSON, které byly vytvořeny pomocí json_object() jsou uzavřeny v poli, které bylo vytvořeno pomocí json_group_array() .


  1. Seznam funkcí data a času v SQL Server (T-SQL)

  2. Jak vrátit výsledky dotazu jako seznam oddělený čárkami na serveru SQL – STRING_AGG()

  3. Jak extrahovat podřetězec v MySQL

  4. Zřetězení řetězců v MySQL