MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_INSERT() erklärt

In MariaDB JSON_ARRAY_INSERT() ist eine integrierte Funktion, die einen Wert in ein JSON-Dokument einfügt und das Ergebnis zurückgibt.

Syntax

Die Syntax lautet wie folgt:

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

Wobei json_doc ist das JSON-Dokument, path ist der Pfad, in den Sie den/die Wert/e einfügen möchten, und value ist der einzufügende Wert.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

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

In diesem Fall der Wert 3 wurde in das Array an Position 1 eingefügt . Arrays sind nullbasiert, also wird es das zweite Element im Array.

Mehrere Werte einfügen

Sie können mehrere Werte in einem einzigen Aufruf von JSON_ARRAY_INSERT() einfügen .

Beispiel:

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

Ergebnis:

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

Die Auswertung erfolgt von links nach rechts.

Folgendes passiert, wenn wir den path wechseln /value Argumente um:

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

Ergebnis:

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

Mehrere Arrays

Sie können innerhalb desselben Aufrufs von JSON_ARRAY_INSERT() Werte in mehr als ein Array einfügen .

Beispiel:

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

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

Ergebnis:

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

Verschachtelte Arrays

Hier ist ein Beispiel für das Einfügen eines Werts in ein verschachteltes Array:

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

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

Ergebnis:

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

Größeres JSON-Dokument

Hier ist ein Beispiel mit einem etwas größeren JSON-Dokument.

Ich verwende auch JSON_DETAILED() um das Ergebnis zu verschönern:

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

Ergebnis:

{ "pet":{ "name":"Fluffy", "diät":[ "Fisch", "Huhn", "Wasser" ] }}

Null-Argumente

Wenn das erste Argument NULL ist , ist das Ergebnis NULL :

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

Ergebnis:

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

Gleiches gilt für den path Argument:

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

Ergebnis:

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

Wenn jedoch der value Argument ist NULL , dann NULL wird in das Array eingefügt:

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

Ergebnis:

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

Sie können auch JSON_ARRAY_APPEND() verwenden um Werte an ein Array anzuhängen.