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

MariaDB JSON_ARRAY_APPEND() erklärt

In MariaDB JSON_ARRAY_APPEND() ist eine integrierte Funktion, die Werte an das Ende des/der angegebenen Arrays/s in einem JSON-Dokument anhängt und das Ergebnis zurückgibt.

Syntax

Die Syntax lautet wie folgt:

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

Wobei json_doc ist das JSON-Dokument, path ist der Pfad, an den Sie den/die Wert/e anhängen möchten, und value ist der anzuhängende Wert.

Beispiel

Hier ist ein Beispiel, um die Funktion zu demonstrieren.

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

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

Ergebnis:

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

In diesem Fall der Wert 4 wurde an das Ende des Arrays angehängt.

Mehrere Werte anhängen

Sie können mehrere Werte innerhalb eines einzigen Aufrufs an JSON_ARRAY_APPEND() anhängen .

Beispiel:

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

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

Ergebnis:

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

Mehrere Arrays

Sie können innerhalb desselben Aufrufs von JSON_ARRAY_APPEND() Werte an mehr als ein Array anhängen .

Beispiel:

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

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

Ergebnis:

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

Verschachtelte Arrays

Hier ist ein Beispiel für das Anhängen eines Werts an ein verschachteltes Array:

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

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

Ergebnis:

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

Und im folgenden Beispiel enthält das ursprüngliche JSON-Dokument kein verschachteltes Array, sondern JSON_ARRAY_APPEND() erstellt ein verschachteltes Array basierend auf unserem Pfad:

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

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

Ergebnis:

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

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", "Chicken"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet', 
            'Water')
); 

Ergebnis:

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

Und hier ist einer, der ein verschachteltes Array erstellt:

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

Ergebnis:

{ "pet":{ "name":"Scratch", "diät":[ "Rindfleisch", [ "Wasser", "Bier" ] ] }}

Null-Argumente

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

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

Ergebnis:

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

Gleiches gilt für den path Argument:

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

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4); 

Ergebnis:

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

Wenn jedoch der value Argument ist NULL , dann NULL wird an das Array angehängt:

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

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

Ergebnis:

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

Sie können auch JSON_ARRAY_INSERT() verwenden um Werte in ein Array einzufügen.