sql >> Databáze >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_APPEND() Vysvětleno

V MariaDB, JSON_ARRAY_APPEND() je vestavěná funkce, která připojuje hodnoty na konec zadaného pole/polí v dokumentu JSON a vrací výsledek.

Syntaxe

Syntaxe vypadá takto:

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

Kde json_doc je dokument JSON, path je cesta k místu, kam chcete připojit hodnotu/y a value je hodnota k připojení.

Příklad

Zde je příklad pro demonstraci funkce.

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

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

Výsledek:

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

V tomto případě hodnota 4 byl připojen na konec pole.

Připojit více hodnot

K JSON_ARRAY_APPEND() můžete v rámci jednoho volání připojit více hodnot .

Příklad:

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

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

Výsledek:

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

Více polí

Hodnoty můžete připojit k více než jednomu poli v rámci stejného volání JSON_ARRAY_APPEND() .

Příklad:

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

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

Výsledek:

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

Vnořená pole

Zde je příklad připojení hodnoty k vnořenému poli:

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

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

Výsledek:

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

A v následujícím příkladu původní dokument JSON neobsahuje vnořené pole, ale JSON_ARRAY_APPEND() vytvoří vnořené pole na základě naší cesty:

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

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

Výsledek:

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

Větší dokument JSON

Zde je příklad s mírně větším dokumentem JSON.

Také používám JSON_DETAILED() pro zkrášlení výsledku:

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

Výsledek:

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

A tady je jeden, který vytváří vnořené pole:

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

Výsledek:

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

Nulové argumenty

Pokud je první argument NULL , výsledkem je NULL :

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

Výsledek:

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

Totéž platí pro path argument:

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

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

Výsledek:

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

Pokud však value argument je NULL a poté NULL je připojen k poli:

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

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

Výsledek:

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

Můžete také použít JSON_ARRAY_INSERT() pro vložení hodnot do pole.


  1. Hodnoty sloupce identity serveru SQL začínají na 0 místo na 1

  2. Prokázání ekvivalence SQL dotazu

  3. Dočasně vypnout omezení (MS SQL)

  4. Jak zajistit, aby vaše databáze MySQL nebo MariaDB byla vysoce dostupná na AWS a Google Cloud