sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_APPEND() Forklaret

I MariaDB, JSON_ARRAY_APPEND() er en indbygget funktion, der tilføjer værdier til slutningen af ​​de angivne arrays i et JSON-dokument og returnerer resultatet.

Syntaks

Syntaksen ser sådan ud:

JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)

Hvor json_doc er JSON-dokumentet, path er stien til hvor du vil tilføje værdien/værdierne og value er den værdi, der skal tilføjes.

Eksempel

Her er et eksempel for at demonstrere funktionen.

SET @json_doc = '[0, 1, 2, 3]';

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);

Resultat:

+--------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$', 4) |
+--------------------------------------+
| [0, 1, 2, 3, 4]                      |
+--------------------------------------+

I dette tilfælde værdien 4 blev tilføjet til slutningen af ​​arrayet.

Tilføj flere værdier

Du kan tilføje flere værdier inden for et enkelt opkald til JSON_ARRAY_APPEND() .

Eksempel:

SET @json_doc = '[0, 1, 2, 3]';

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);

Resultat:

+----------------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) |
+----------------------------------------------+
| [0, 1, 2, 3, 4, 5]                           |
+----------------------------------------------+

Flere arrays

Du kan tilføje værdier til mere end én matrix inden for samme opkald til JSON_ARRAY_APPEND() .

Eksempel:

SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';

SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);

Resultat:

+--------------------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) |
+--------------------------------------------------+
| {"a": [0, 1, 4], "b": [2, 3, 5]}                 |
+--------------------------------------------------+

Indlejrede arrays

Her er et eksempel på tilføjelse af en værdi til et indlejret array:

SET @json_doc = '[0, 1, [2, 3]]';

SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4);

Resultat:

+-----------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) |
+-----------------------------------------+
| [0, 1, [2, 3, 4]]                       |
+-----------------------------------------+

Og i det følgende eksempel indeholder det originale JSON-dokument ikke et indlejret array, men JSON_ARRAY_APPEND() opretter et indlejret array baseret på vores sti:

SET @json_doc = '[0, 1, 2, 3]';

SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);

Resultat:

+-----------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) |
+-----------------------------------------+
| [0, 1, 2, [3, 4]]                       |
+-----------------------------------------+

Større JSON-dokument

Her er et eksempel med et lidt større JSON-dokument.

Jeg bruger også JSON_DETAILED() for at forskønne resultatet:

SET @json_doc = '{  
    "pet": {    
       "name": "Fluffy", 
       "diet": ["Fish", "Chicken"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet', 
            'Water')
);

Resultat:

{
    "pet": 
    {
        "name": "Fluffy",
        "diet": 
        [
            "Fish",
            "Chicken",
            "Water"
        ]
    }
}

Og her er en, der opretter et indlejret array:

SET @json_doc = '{  
    "pet": {    
       "name": "Scratch", 
       "diet": ["Beef", "Water"]
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet[1]', 
            'Beer')
);

Resultat:

{
    "pet": 
    {
        "name": "Scratch",
        "diet": 
        [
            "Beef",
            
            [
                "Water",
                "Beer"
            ]
        ]
    }
}

Nul-argumenter

Hvis det første argument er NULL , resultatet er NULL :

SELECT JSON_ARRAY_APPEND(null, '$', 4);

Resultat:

+---------------------------------+
| JSON_ARRAY_APPEND(null, '$', 4) |
+---------------------------------+
| NULL                            |
+---------------------------------+

Det samme gælder for path argument:

SET @json_doc = '[0, 1, 2, 3]';

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

Resultat:

+---------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, null, 4) |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

Men hvis value argumentet er NULL , derefter NULL er tilføjet til arrayet:

SET @json_doc = '[0, 1, 2, 3]';

SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);

Resultat:

+-----------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, '$', null) |
+-----------------------------------------+
| [0, 1, 2, 3, null]                      |
+-----------------------------------------+

Du kan også bruge JSON_ARRAY_INSERT() for at indsætte værdier i en matrix.


  1. Køre 2 forespørgsler på samme tid på Oracle SQL Developer?

  2. Top 30 SQL Query-interviewspørgsmål, du skal praktisere i 2022

  3. Sådan aktiveres den langsomme forespørgselslog i MySQL

  4. mysql_fetch_array() forventer, at parameter 1 er et ressourceproblem