sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_INSERT() uitgelegd

In MariaDB, JSON_ARRAY_INSERT() is een ingebouwde functie die een waarde invoegt in een JSON-document en het resultaat retourneert.

Syntaxis

De syntaxis gaat als volgt:

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

Waar json_doc is het JSON-document, path is het pad naar waar u de waarde(n) wilt invoegen, en value is de waarde die moet worden ingevoegd.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3);

Resultaat:

+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2]                              |
+-------------------------------------------+

In dit geval is de waarde 3 werd ingevoegd in de array op positie 1 . Arrays zijn gebaseerd op nul, dus het wordt het tweede element in de array.

Vul meerdere waarden in

U kunt meerdere waarden invoegen binnen een enkele aanroep naar JSON_ARRAY_INSERT() .

Voorbeeld:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5);

Resultaat:

+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2]                                      |
+------------------------------------------------------+

De evaluatie wordt van links naar rechts uitgevoerd.

Dit is wat er gebeurt als we het path veranderen /value argumenten rond:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4);

Resultaat:

+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2]                                      |
+------------------------------------------------------+

Meerdere arrays

U kunt waarden invoegen in meer dan één array binnen dezelfde aanroep naar JSON_ARRAY_INSERT() .

Voorbeeld:

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

SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5);

Resultaat:

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

Geneste arrays

Hier is een voorbeeld van het invoegen van een waarde in een geneste array:

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

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

Resultaat:

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

Groter JSON-document

Hier is een voorbeeld met een iets groter JSON-document.

Ik gebruik ook JSON_DETAILED() om het resultaat mooier te maken:

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

Resultaat:

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

Nullargumenten

Als het eerste argument NULL . is , het resultaat is NULL :

SELECT JSON_ARRAY_INSERT(null, '$[1]', 4);

Resultaat:

+------------------------------------+
| JSON_ARRAY_INSERT(null, '$[1]', 4) |
+------------------------------------+
| NULL                               |
+------------------------------------+

Hetzelfde geldt voor het path argument:

SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4);

Resultaat:

+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL                                       |
+--------------------------------------------+

Als de value argument is NULL , dan NULL wordt ingevoegd in de array:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);

Resultaat:

+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2]                              |
+----------------------------------------------+

U kunt ook JSON_ARRAY_APPEND() . gebruiken om waarden aan een array toe te voegen.


  1. Wat is ODBC?

  2. Voorwaardelijke JOIN-instructie SQL Server

  3. Hoe te updaten met inner join in Oracle

  4. SQL:Een relatietabel maken met 2 verschillende auto_increment