Blog

Extraer valor dentro de un JSON en MySQL

En versiones recientes de MySQL ya se puede trabajar de manera diferente con campos de JSON pero en la versión que estaba usando en un proyecto tuve la necesitad de sacar unos datos, entre ellos, los de un campo que está en formato JSON.

La consulta query que hice quedo así:

/* El valor de +10 debe ser en relacion al tamaño del string + 4 por las comillas y 2 puntos */
SELECT
  fecha,email,substring(campos, locate('"nombre":',campos)+10,
     locate('","', campos, locate('"nombre":',campos))-locate('"nombre":',campos)-10) as nombre
FROM
  registros where (site = 18 OR site = 19) AND estatus > 0 order by id​


Como puse en el comentario dentro del query, el valor actual de +10 y -10 es dependiendo del tamaño del nombre del campo más 4, en mi caso son 10 por que se consideran nombre + ":',

Quizá existan mejores formas de hacerlo, fue la que yo implemente y espero que a alguien le sirva o igual, si alguien puede compartir otras formas (mejores) siempre serán bienvenidas.

Javi Mata

Web Developer, especializado en PHP, Shopify, Joomla, Wordpress, HTML5, CSS, etc.

Donativos

Ver más formas de apoyar

Socio-certificado.jpg