MySQL JSON_EXTRACT: Guía Completa para Extraer Datos JSON
Introducción
Con el auge de las APIs y aplicaciones modernas, almacenar datos en formato JSON dentro de MySQL se ha vuelto muy común. La función JSON_EXTRACT es tu herramienta principal para acceder a estos datos.
¿Qué es JSON_EXTRACT?
JSON_EXTRACT es una función de MySQL que permite extraer valores específicos de columnas que contienen datos JSON.
Sintaxis Básica
JSON_EXTRACT(columna_json, '$.ruta.al.valor')
Ejemplos Prácticos
Estructura de Datos de Ejemplo
Imagina una tabla usuarios con una columna perfil tipo JSON:
{
"nombre": "María García",
"edad": 28,
"direccion": {
"ciudad": "Madrid",
"pais": "España"
},
"intereses": ["tecnología", "música", "viajes"]
}
Ejemplo 1: Extraer Valor Simple
SELECT JSON_EXTRACT(perfil, '$.nombre') AS nombre
FROM usuarios;
Resultado: "María García"
Ejemplo 2: Extraer Valor Anidado
SELECT JSON_EXTRACT(perfil, '$.direccion.ciudad') AS ciudad
FROM usuarios;
Resultado: "Madrid"
Ejemplo 3: Acceder a Arrays
-- Primer elemento del array
SELECT JSON_EXTRACT(perfil, '$.intereses[0]') AS primer_interes
FROM usuarios;
Resultado: "tecnología"
Ejemplo 4: Operador Shorthand ->
MySQL ofrece una sintaxis más corta:
SELECT perfil->'$.nombre' AS nombre
FROM usuarios;
Ejemplo 5: Quitar Comillas con ->>
SELECT perfil->>'$.nombre' AS nombre
FROM usuarios;
Resultado: María García (sin comillas)
Filtrar por Valores JSON
WHERE con JSON_EXTRACT
SELECT *
FROM usuarios
WHERE JSON_EXTRACT(perfil, '$.direccion.pais') = '"España"';
Usando el Operador ->>
SELECT *
FROM usuarios
WHERE perfil->>'$.direccion.pais' = 'España';
Funciones JSON Relacionadas
| Función | Descripción | Ejemplo |
|---------|-------------|---------|
| JSON_EXTRACT | Extrae valores | JSON_EXTRACT(col, '$.key') | | JSON_UNQUOTE | Quita comillas | JSON_UNQUOTE(JSON_EXTRACT(...)) | | JSON_CONTAINS | Verifica si contiene valor | JSON_CONTAINS(col, '"valor"', '$.array') | | JSON_KEYS | Lista las claves | JSON_KEYS(col) | | JSON_LENGTH | Cuenta elementos | JSON_LENGTH(col, '$.array') |
Casos de Uso Avanzados
Buscar en Arrays
SELECT *
FROM usuarios
WHERE JSON_CONTAINS(perfil, '"música"', '$.intereses');
Extraer Múltiples Valores
SELECT
perfil->>'$.nombre' AS nombre,
perfil->>'$.direccion.ciudad' AS ciudad,
JSON_LENGTH(perfil, '$.intereses') AS num_intereses
FROM usuarios;
Actualizar Valores JSON
UPDATE usuarios
SET perfil = JSON_SET(perfil, '$.edad', 29)
WHERE id = 1;
Optimización y Performance
Índices en Columnas JSON
-- Crear columna virtual
ALTER TABLE usuarios
ADD COLUMN ciudad VARCHAR(100)
GENERATED ALWAYS AS (perfil->>'$.direccion.ciudad');
Mejores Prácticas
1. Usa índices virtuales para campos JSON que consultas frecuentemente 2. Evita JSON_EXTRACT en WHERE sin índices en tablas grandes 3. Considera normalizar datos que consultas muy seguido
Errores Comunes
Error 1: Ruta Incorrecta
-- Incorrecto
JSON_EXTRACT(perfil, 'nombre')
Error 2: Comparación con Comillas
-- Incorrecto (no encuentra resultados)
WHERE JSON_EXTRACT(perfil, '$.ciudad') = 'Madrid'
Conclusión
JSON_EXTRACT es fundamental para trabajar con datos JSON en MySQL. Dominar esta función te permite aprovechar la flexibilidad del JSON mientras mantienes el poder de las consultas SQL.
---
Tip Pro: Usa herramientas de IA como AI2sql para generar consultas JSON_EXTRACT complejas automáticamente.
Inicia tu prueba gratuita
Share this
More Articles
TOOLS
Build Your Own AI Agent Team in 15 Min — Free OpenClaw Guide
Feb 5, 2026
TOOLS
OpenClaw AI Assistant: Local 24/7 Automation Guide 2026
Feb 4, 2026
TOOLS
SQL WITH Clause (CTE): Complete Guide with Examples
Jan 14, 2026
TOOLS
MySQL to PostgreSQL Migration: Complete 2026 Guide with Syntax Conversion
Jan 14, 2026
TOOLS
SQL vs Excel: When Should You Make the Switch? [2026]
Jan 14, 2026
Copyright © AI2sql 2026
Cross Regions Technology
13553 Atlantic Blvd, Suite 201
FL 32225
Company