En MySQL, JSON_ARRAY_INSERT()
La función se usa para insertar un nuevo valor en una matriz.
Proporcione el documento JSON como primer argumento, seguido de la ruta para insertar, seguido del valor para insertar.
Sintaxis
La sintaxis es así:
JSON_INSERT(json_doc, path, val[, path, val] ...)
donde:
json_doc
es el documento JSON.path
es la ruta del elemento para el cual insertar el nuevo valor.val
es el nuevo valor que se insertará.
Los pares ruta-valor se evalúan de izquierda a derecha. El documento producido al evaluar un par se convierte en el nuevo valor contra el cual se evalúa el siguiente par.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
Resultado:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
Entonces, el tercer argumento se inserta en la matriz en la ruta especificada. En este caso, uso $[1]
para la ruta, que se refiere al segundo elemento (las matrices JSON usan numeración basada en cero; la numeración comienza en 0
).
Ejemplo 2:matriz anidada
Este es un ejemplo de cómo insertar un valor en una matriz que está anidada dentro de otra matriz.
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
Resultado:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
Así que aquí uso $[2][1]
como el camino. El [2]
se refiere al tercer elemento de la matriz externa. El [1]
se refiere al segundo elemento de la matriz anidada.
Ejemplo 3:un documento JSON más grande
Este ejemplo utiliza un documento JSON (ligeramente) más grande. Esto demuestra cómo cambia la ruta dependiendo de dónde se encuentre la matriz dentro del documento.
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
Resultado:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} | +----------------------------------------------------------------------------------+