En MariaDB, JSON_MERGE_PRESERVE()
es una función integrada que combina dos o más documentos JSON y devuelve el resultado.
JSON_MERGE_PRESERVE()
es un sinónimo de JSON_MERGE()
, que ha quedado en desuso. Para evitar problemas futuros, debe usar JSON_MERGE_PATCH()
función en su lugar. El JSON_MERGE_PATCH()
La función es un reemplazo compatible con RFC 7396 para JSON_MERGE()
.
Sintaxis
La sintaxis es así:
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)
Donde json_doc
son los documentos JSON a fusionar.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT JSON_MERGE_PRESERVE(
'{"name":"Wag"}',
'{"type":"Dog"}'
) AS Result;
Resultado:
+--------------------------------+ | Result | +--------------------------------+ | {"name": "Wag", "type": "Dog"} | +--------------------------------+
Podemos ver que los dos documentos se han fusionado en uno.
Aquí hay un ejemplo que fusiona tres documentos:
SELECT JSON_MERGE_PRESERVE(
'{ "name" : "Wag" }',
'{ "type" : "Dog" }',
'{ "score" : [ 9, 7, 8 ] }'
) AS Result;
Resultado:
+----------------------------------------------------+ | Result | +----------------------------------------------------+ | {"name": "Wag", "type": "Dog", "score": [9, 7, 8]} | +----------------------------------------------------+
Arreglos
Una diferencia entre JSON_MERGE_PRESERVE()
y JSON_MERGE_PATCH()
es que JSON_MERGE_PRESERVE()
fusiona matrices (JSON_MERGE_PATCH()
no):
SELECT JSON_MERGE_PRESERVE(
'[1,2,3]',
'[4,5,6]'
) AS Result;
Resultado:
+--------------------+ | Result | +--------------------+ | [1, 2, 3, 4, 5, 6] | +--------------------+
Intentando esto con JSON_MERGE_PATCH()
da como resultado que solo se devuelva la segunda matriz.
En caso de que te lo estés preguntando, sí JSON_MERGE()
también fusiona matrices.
Argumento nulo
Si algún argumento es NULL
, el resultado es NULL
:
SELECT
JSON_MERGE_PRESERVE('{"a":1}', null) AS a,
JSON_MERGE_PRESERVE(null, '{"a":1}') AS b,
JSON_MERGE_PRESERVE(null, null) AS c;
Resultado:
+------+------+------+ | a | b | c | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Recuento de parámetros incorrecto
Llamar a la función sin ningún argumento da como resultado un error:
SELECT JSON_MERGE_PRESERVE();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PRESERVE'
Es lo mismo cuando proporcionas solo un argumento:
SELECT JSON_MERGE_PRESERVE('{"a":1}');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PRESERVE'