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

MariaDB JSON_MERGE_PATCH() erklärt

In MariaDB, JSON_MERGE_PATCH() ist eine integrierte Funktion, die zwei oder mehr JSON-Dokumente zusammenführt und das Ergebnis zurückgibt.

Der JSON_MERGE_PATCH() -Funktion ist ein RFC 7396-konformer Ersatz für JSON_MERGE() Funktion, die veraltet ist.

Syntax

Die Syntax sieht so aus:

JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...) 

Wobei json_doc sind die zusammenzuführenden JSON-Dokumente.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

SELECT JSON_MERGE_PATCH('{"name":"Wag"}', '{"type":"Dog"}'); 

Ergebnis:

+---------------------------------------------- --------+| JSON_MERGE_PATCH('{"name":"Wag"}', '{"type":"Hund"}') |+--------------------- ---------------------------------+| {"Name":"Wag", "Typ":"Hund"} |+------------------------------- -----------------------+

Wir können sehen, dass die beiden Dokumente zu einem zusammengeführt wurden.

Hier ist ein Beispiel, das drei Dokumente zusammenführt:

SELECT JSON_MERGE_PATCH(
    '{ "name" : "Wag" }', 
    '{ "type" : "Dog" }',
    '{ "score" : [ 9, 7, 8 ] }'
    ) AS Result; 

Ergebnis:

+---------------------------------------------- ------+| Ergebnis |+------------------------------------------------------------ -----+| {"Name":"Wag", "Typ":"Hund", "Ergebnis":[9, 7, 8]} |+------------------ ---------------------------------+

Arrays

Der JSON_MERGE_PATCH() Funktion führt keine Arrays zusammen:

SELECT JSON_MERGE_PATCH(
    '[1,2,3]', 
    '[4,5,6]'
    ) AS Result; 

Ergebnis:

+-----------+| Ergebnis |+-----------+| [4, 5, 6] |+-----------+

Dies steht im Gegensatz zum (veralteten) JSON_MERGE() Funktion und ihr Synonym JSON_MERGE_PRESERVE() , die beide Arrays zusammenführen.

Format des Ergebnisses

Sie haben vielleicht bemerkt, dass JSON_MERGE_PATCH() fügt dem resultierenden Dokument Leerzeichen hinzu. Wenn dies ein Problem ist, können Sie JSON_COMPACT() verwenden um das Leerzeichen zu entfernen.

Beispiel:

SELECT 
    JSON_COMPACT(
        JSON_MERGE_PATCH(
            '{"name":"Wag"}', 
            '{"type":"Dog"}',
            '{"score":[9,7,8]}'
        )
    ) AS Result; 

Ergebnis:

+---------------------------------------------+ | Ergebnis |+---------------------------------------------+| {"name":"Wag","type":"Dog","score":[9,7,8]} |+------------------- --------------------------+

Wenn Sie jedoch den anderen Weg gehen und zusätzliche Formatierungen wie eingerückte Strukturen erhalten müssen, versuchen Sie es mit JSON_DETAILED() Funktion.

SELECT 
    JSON_DETAILED(
        JSON_MERGE_PATCH(
            '{ "name" : "Wag" }', 
            '{ "type" : "Dog" }',
            '{ "score" : [ 9, 7, 8 ] }'
        )
    ) AS Result; 

Ergebnis:

+--------------------------+| Ergebnis |+----------------------------------------------------+| { "Name":"Wag", "Typ":"Hund", "Ergebnis":[ 9, 7, 8 ]} |+------------------ --------------------+

Null-Argument

Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :

SELECT 
    JSON_MERGE_PATCH('{"a":1}', null) AS a,
    JSON_MERGE_PATCH(null, '{"a":1}') AS b,
    JSON_MERGE_PATCH(null, null) AS c; 

Ergebnis:

+------+------+------+| ein | b | c |+------+------+------+| NULL | NULL | NULL |+------+------+------+

Falsche Parameteranzahl

Der Aufruf der Funktion ohne Argumente führt zu einem Fehler:

SELECT JSON_MERGE_PATCH(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_MERGE_PATCH“

Dasselbe gilt, wenn Sie nur ein Argument angeben:

SELECT JSON_MERGE_PATCH('{"a":1}'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_MERGE_PATCH“