En MariaDB, JSON_MERGE()
es una función integrada que combina dos o más documentos JSON y devuelve el resultado.
El JSON_MERGE()
la función ha quedado obsoleta y, 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(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('{"name":"Wag"}', '{"type":"Dog"}');
Resultado:
+------------------------------------------------+ | JSON_MERGE('{"name":"Wag"}', '{"type":"Dog"}') | +------------------------------------------------+ | {"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(
'{ "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()
y JSON_MERGE_PATCH()
es que JSON_MERGE()
fusiona matrices (JSON_MERGE_PATCH()
no):
SELECT JSON_MERGE(
'[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.
Argumento nulo
Si algún argumento es NULL
, el resultado es NULL
:
SELECT
JSON_MERGE('{"a":1}', null) AS a,
JSON_MERGE(null, '{"a":1}') AS b,
JSON_MERGE(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();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE'
Es lo mismo cuando proporcionas solo un argumento:
SELECT JSON_MERGE('{"a":1}');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE'