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:
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:
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“