Extraer valores de un campo JSON en MySql



Cuando almacenamos datos del tipo JSON en MySql, podemos muy facilmente extraer los valores de un determinado campo con una query.

Suscríbete a nuestra newsletter

Sin spam. Solo contenido útil para profesionales de bases de datos.



El proceso es mu sencillo, supongamos que tenemos una tabla que se llama errores y dentro un campo llamado details que es del tipo JSON y tenemos almacenados jsons con un formato como este:

{
"id": "aaaac175-c971-5e32-3333-d35797aasssdaa",
"operation_id": "QQQQbc74-3333-475b-3333-bd8cfe0b6c22",
"created_at": "2022-03-26T01:27:49+01:00",
"context": {
"status": "ERROR",
"error_type": "SFTP_TRANSFER_FAILED",
"error": "Inappropriate ioctl for device",
"occurred_on": "2022-03-26T01:27:51+01:00",
}
}


Y queremos obtener el valor del campo operation_id en una query. La consulta nos quedaría así:

SELECT *, JSON_EXTRACT(details, "$.operation_id") AS operation_id FROM errores
Si quisiéramos el tipo de error la consultase seria:

SELECT *, JSON_EXTRACT(details, "$.context.error_type") AS error_type FROM errores
Y así sucesivamente con el resto de niveles que pudiera tener el json.

Y esto es todo, y feliz programming
Saludos
Alex.