Como está escrito en los documentos, JSON_MERGE_PATCH eliminará cada valor que se establece en nulo, el siguiente ejemplo eliminará el valor del encabezado de mi campo json de configuración
const data = JSON.stringify({header: null, otherdata: ...}) await connection.query(UPDATE shops SET JSON_MERGE_PATCH(settings, ?), data) Sin embargo, ¿qué pasa si quiero establecer el valor en nulo? Si rodeo el header: 'null' , con comillas, puede adivinarlo: ingresa 'null' como una cadena en mi base de datos.
¿Alguien sabe si es posible que mysql actualice mi campo json con un valor nulo?
Como no parece haber una solución MySQL pura para este problema, es mejor que implemente esto en JavaScript.
Implementarías esto algo como esto:
Un enfoque alternativo podría ser usar JSON_SET para cada clave de objeto que tenga:
UPDATE shops SET JSON_SET(settings, '$.header', null) -- Then repeat for each json key you want to modify