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.
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 $
.
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
Parámetro | Descripción |
---|---|
json_doc
|
Documento JSON del cual se extraerán datos. |
path
|
Ruta del dato en formato JSONPath ($.campo ).
|
Puedes extraer varios valores dentro de una misma consulta:
SELECT
JSON_EXTRACT(detalles, '$.marca') AS marca,
JSON_EXTRACT(detalles, '$.precio') AS precio
FROM productos;
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;
Jorge García
Fullstack developer