Volver a la página principal
miércoles 5 febrero 2025
12

Cómo extraer datos de JSON en MySQL con JSON_EXTRACT

JSON_EXTRACT es una función de MySQL que permite extraer valores específicos de un documento JSON almacenado en una columna. Se usa para consultar y manipular datos en formato JSON dentro de la base de datos.

Sintaxis de JSON_EXTRACT en MySQL

La sintaxis básica de JSON_EXTRACT es:

JSON_EXTRACT(json_doc, path)
  • json_doc: El campo o valor JSON del cual se extraerá la información.
  • path: La ruta del dato dentro del JSON, siguiendo la notación de $.

Ejemplo de uso

Supongamos que tenemos una tabla productos con una columna detalles que almacena datos en formato JSON:

CREATE TABLE productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50),
    detalles JSON
);

Insertamos un registro con datos JSON:

INSERT INTO productos (nombre, detalles) 
VALUES ('Laptop', '{"marca": "Dell", "precio": 1200, "stock": {"disponible": 10}}');

Ahora, podemos extraer valores con JSON_EXTRACT:

SELECT JSON_EXTRACT(detalles, '$.marca') AS marca FROM productos;
-- Resultado: "Dell"

SELECT JSON_EXTRACT(detalles, '$.stock.disponible') AS stock FROM productos;
-- Resultado: 10

Tabla de parámetros

Parámetro Descripción
json_doc Documento JSON del cual se extraerán datos.
path Ruta del dato en formato JSONPath ($.campo).

Más ejemplos de JSON_EXTRACT

Extraer múltiples valores

Puedes extraer varios valores dentro de una misma consulta:

SELECT 
    JSON_EXTRACT(detalles, '$.marca') AS marca, 
    JSON_EXTRACT(detalles, '$.precio') AS precio 
FROM productos;

Convertir resultado a otro tipo de dato

Por defecto, JSON_EXTRACT devuelve los valores en formato JSON. Para obtener un número en formato numérico, usa CAST:

SELECT CAST(JSON_EXTRACT(detalles, '$.precio') AS UNSIGNED) AS precio FROM productos;
Etiquetas:
sql mysql
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer