Saltar al contenido principal
Página traducida

Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.

JSON_SET

Actualiza valores existentes o inserta nuevos valores en un documento JSON en las rutas especificadas.

Consulte también:
[SELECT] [JSON_EXTRACT] [JSON_SET] [JSON_REPLACE]


Sintaxis​

SELECT JSON_SET(json_column, path, value_to_set) FROM <multipartIdentifier>;

Argumentos​

json_column
La columna o expresión JSON que se va a modificar.

path
La expresión de ruta JSON que indica dónde establecer el valor. Si la ruta existe, el valor se actualiza; si la ruta no existe, se agrega un nuevo par clave-valor.

value_to_set
El valor que se establece en la ruta especificada del documento JSON.

Valor(es) devuelto(s)​

Devuelve un documento JSON con el valor establecido en la ruta especificada. Si la ruta existe, el valor existente se actualiza; en caso contrario, se agrega un nuevo par clave-valor.

Comportamiento si una clave existe
Función¿Sobrescribir si ya existe?¿Crear si no existe?
json_insert()NoSí
json_replace()SíNo
json_set()SíSí

Ejemplos​

Actualizar un valor existente en un objeto JSON​

-- Example: Update the 'status' key's value to 'active' in a JSON object
SELECT JSON_SET(json_data, '$.status', 'active') as updated_json
FROM cloud_services
WHERE service_id = 'service123';

-- Expected output:
-- |---------------------------------------------------------|
-- | updated_json |
-- |---------------------------------------------------------|
-- | {"name":"ServiceOne", "status":"active", "region":"US"} |
-- |---------------------------------------------------------|

Esta consulta actualiza la clave 'status' a 'active' en el documento JSON si la clave 'status' existe. Si 'status' no existe en el documento, se agrega con el valor 'active'.

Agregar un nuevo par clave-valor a un objeto JSON​

-- Example: Add a new key 'lastChecked' with the current date to a JSON object
SELECT JSON_SET(json_data, '$.lastChecked', '2024-04-29') as updated_json
FROM cloud_services
WHERE service_id = 'service123';

/* expected output...
|-----------------------------------------------------------------------|
| updated_json |
|-----------------------------------------------------------------------|
| {"name":"ServiceOne", "status":"pending", "lastChecked":"2024-04-29"} |
|-----------------------------------------------------------------------|
*/

Esta consulta agrega una nueva clave 'lastChecked' con el valor '2024-04-29' al documento JSON si 'lastChecked' aún no existe. Si ya existe, el valor existente se actualiza a '2024-04-29'.