• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Guía definitiva para trabajar con JSON en SQL Server

noviembre 18, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 7 minutos

El formato JSON (JavaScript Object Notation) se ha convertido en el estándar de facto para almacenar y transmitir datos estructurados. Es ligero, fácil de leer tanto para personas como para máquinas, y es compatible con prácticamente todos los lenguajes de programación modernos.

Ahora bien, si queremos almacenar este tipo de datos en una base de datos SQL Server, habitualmente surge una pregunta: ¿es necesario transformar los datos en tablas tradicionales?

La respuesta es no necesariamente. Desde SQL Server 2016, el motor de base de datos incluye soporte nativo para JSON, lo que permite almacenarlo directamente en campos de tipo NVARCHAR y aprovechar una serie de funcionalidades integradas de la base de datos, entre las que se pueden destacar:

  • Consultar propiedades específicas como si fueran columnas.
  • Modificar valores dentro del JSON sin sobrescribir todo el documento.
  • Convertir datos tabulares a JSON limpio.
  • Descomponer arrays en filas para realizar análisis más avanzados.

En esta entrada se explicará cómo almacenar y manipular datos JSON en SQL Server de forma eficiente, mostrando ejemplos prácticos de cómo leer propiedades, extraer información, modificar valores y generar resultados en formato JSON directamente desde tus consultas SQL.

Tabla de contenidos

  • 1 Por qué usar JSON en SQL Server
  • 2 Cómo almacenar JSON en SQL Server
  • 3 Extraer valores de un JSON con JSON_VALUE y JSON_QUERY
    • 3.1 Extraer valores escalares con JSON_VALUE
    • 3.2 Extraer objetos con JSON_QUERY
  • 4 Construir un JSON a partir de propiedades (FOR JSON PATH)
  • 5 Filtrar en base a los valores dentro de un JSON
  • 6 Modificar valores dentro de un JSON con JSON_MODIFY
  • 7 Conclusiones

Por qué usar JSON en SQL Server

En los sistemas relacionales tradicionales, los datos se organizan en tablas con columnas bien definidas y relaciones claras entre ellas. Este enfoque funciona muy bien cuando la estructura de los datos es estable. Sin embargo, en muchos escenarios actuales los datos no son completamente estáticos, por lo que es habitual trabajar con información semiestructurada o que cambia de forma con el tiempo. En esos casos, JSON se convierte en una alternativa ideal.

Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
En Analytics Lane
Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane

Algunos ejemplos donde JSON es especialmente útil en SQL Server son:

  • Datos con estructura variable: cuando una integración externa devuelve hoy un número, pero mañana un objeto con propiedades adicionales.
  • Metadatos dinámicos: entidades que contienen información opcional o personalizada que no justifica crear columnas adicionales o tablas auxiliares.
  • Registros de logs o trazas: JSON es perfecto para almacenar eventos con estructura flexible, sin modificar el esquema cada vez que se añade un nuevo campo.
  • Configuraciones y plantillas: muchos sistemas usan JSON para describir reglas, comportamientos o parámetros dinámicos.

Además, JSON es un formato auto-descriptivo que se integra naturalmente con lenguajes como JavaScript, Python o C#, lo que facilita el intercambio de datos entre las aplicaciones y la base de datos sin necesidad de transformaciones complejas.

Cómo almacenar JSON en SQL Server

A diferencia de otras bases de datos relacionales como PostgreSQL, SQL Server no dispone de un tipo de dato JSON nativo. Sin embargo, desde SQL Server 2016 se pueden almacenar y procesar JSON utilizando columnas de tipo NVARCHAR(MAX), un enfoque que ofrece flexibilidad y compatibilidad total con las funciones JSON que el propio motor de SQL Server incorpora.

Por ejemplo, podemos crear una tabla Operaciones que almacene un identificador y un campo con el contenido JSON de cada operación:

CREATE TABLE Operaciones (
    Id INT IDENTITY PRIMARY KEY,
    JsCalcResults NVARCHAR(MAX) NOT NULL
);

Una vez creada la tabla, podemos insertar registros con datos JSON directamente:

INSERT INTO Operaciones (JsCalcResults) VALUES (N'
{
  "_calculator": {
    "resultadosTotal": 1000,
    "impuestos": 210,
    "detalles": {
      "base": 790,
      "iva": 210
    }
  }
}');

Importante: Es aconsejable incluir siempre la letra N antes de la cadena JSON. Esto indica que la cadena es Unicode (NVARCHAR) y evita problemas con caracteres especiales o acentos.

Con esto, ya tenemos un JSON almacenado en la base de datos, listo para ser consultado y manipulado con las funciones nativas que veremos a continuación.

Publicidad


Extraer valores de un JSON con JSON_VALUE y JSON_QUERY

Insertar JSON en una columna NVARCHAR es relativamente simple: básicamente, un JSON es solo una cadena de texto. Pero lo verdaderamente útil es que SQL Server permite consultar y manipular su contenido como si fueran campos de una tabla.

Para ello, se utilizan principalmente dos funciones:

  • JSON_VALUE() → extrae valores escalares (texto, números, booleanos).
  • JSON_QUERY() → extrae objetos o arrays completos.

Ambas funciones utilizan rutas JSON con notación de punto ($.propiedad.subpropiedad) para acceder a los valores deseados dentro del documento.

Extraer valores escalares con JSON_VALUE

Cuando es necesario acceder a una propiedad cuyo valor sea un número o una cadena de texto, se puede usar la función JSON_VALUE(). Por ejemplo, para acceder a la propiedad _calculator.impuestos del JSON que se ha subido previamente a la base de datos, se puede usar la siguiente consulta:

SELECT JSON_VALUE(JsCalcResults, '$._calculator.impuestos') AS Impuestos
FROM Operaciones;

El resultado de esta consulta se puede ver en la siguiente captura de pantalla.

Captura de pantalla de la consulta de los valores de un JSON directamente en SQL Server con JSON_VALUE
Consulta de los valores de un JSON directamente en SQL Server con JSON_VALUE

Nota: El uso de la función JSON_VALUE() sobre un objeto o un array completo produce como resultado un valor NULL. En esos casos se debe usar la función JSON_QUERY(), que se mostrará en la siguiente sección.

Extraer objetos con JSON_QUERY

Cuando la propiedad que se quiere obtener es un objeto o un array, la función que se debe utilizar es JSON_QUERY. A diferencia de JSON_VALUE, que devuelve valores escalares, JSON_QUERY devuelve subdocumentos JSON completos. Por ejemplo, en el JSON de ejemplo tenemos un objeto detalles al que se puede acceder mediante una consulta como la siguiente:

SELECT JSON_QUERY(JsCalcResults, '$._calculator.detalles') AS Detalles
FROM Operaciones;

El resultado de esta operación se puede ver en la siguiente captura de pantalla.

Captura de pantalla de la consulta de los valores de un JSON directamente en SQL Server con JSON_QUERY
Consulta de los valores de un JSON directamente en SQL Server con JSON_QUERY

En este caso, el resultado es un fragmento del JSON original con el contenido del objeto detalles.
Esto permite recuperar secciones complejas del documento, mantener su estructura y manipularlas más adelante según sea necesario.

Publicidad


Construir un JSON a partir de propiedades (FOR JSON PATH)

FOR JSON PATH es una de las funcionalidades más potentes de SQL Server para generar documentos JSON directamente desde las consultas. Con ella, se pueden crear estructuras jerárquicas sin necesidad de procesarlas luego en el backend o en la capa de aplicación.

Por ejemplo, se puede construir un objeto JSON a partir de los campos de la tabla con una simple consulta:

SELECT 
    250 AS impuestos,
    360 AS resultadosTotal
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;

El resultado será un documento JSON limpio y bien formado, listo para enviarse a una API o consumirse desde una aplicación cliente.

Filtrar en base a los valores dentro de un JSON

Otra gran ventaja del soporte que ofrece SQL Server para documentos JSON es la posibilidad de filtrar registros según los valores internos del documento. Para ello, se puede usar JSON_VALUE() directamente dentro de las cláusulas WHERE.

Por ejemplo, se puede buscar todas las operaciones con un valor de impuestos superior a 100 mediante una consulta como la siguiente:

SELECT *
FROM Operaciones
WHERE CAST(JSON_VALUE(JsCalcResults, '$._calculator.impuestos') AS INT) > 100;

El resultado devolverá únicamente aquellas operaciones que cumplan la condición especificada.

Captura de pantalla de una consulta realiza filtrando sobre los valores del JSON en SQL Server
Consulta realiza filtrando sobre los valores del JSON en SQL Server

De este modo, SQL Server permite trabajar con datos semiestructurados como si fueran campos normales, facilitando los análisis y búsquedas dentro de columnas JSON sin necesidad de descomponer la información en tablas adicionales.

Modificar valores dentro de un JSON con JSON_MODIFY

Además de leer y filtrar datos dentro de un JSON, también es posible modificarlos directamente desde SQL Server. La función JSON_MODIFY() permite actualizar, agregar o eliminar propiedades sin necesidad de sobrescribir todo el documento.

Por ejemplo, se puede cambiar el valor de una propiedad existente:

UPDATE Operaciones
SET JsCalcResults = JSON_MODIFY(JsCalcResults, '$._calculator.impuestos', 300)
WHERE Id = 1;

Y también agregar nuevas propiedades en caso de que no existan:

UPDATE Operaciones
SET JsCalcResults = JSON_MODIFY(JsCalcResults, '$._calculator.descuento', 50)
WHERE Id = 1;

De esta forma, se puede editar el contenido JSON directamente en la base de datos, sin necesidad de extraerlo al código de la aplicación, modificarlo y volver a guardarlo. Esto hace que las actualizaciones de campos sean más simples, rápidas y eficientes.

Publicidad


Conclusiones

En esta entrada hemos visto que trabajar con JSON en SQL Server es más fácil y potente de lo que muchos imaginan. Lejos de ser un formato exclusivo del frontend o del backend, SQL Server ofrece soporte nativo completo para almacenar, consultar y modificar datos JSON de forma directa.

Con funciones como:

  • JSON_VALUE() y JSON_QUERY() → para leer propiedades internas y objetos.
  • FOR JSON PATH → para generar respuestas JSON limpias desde tus consultas.
  • JSON_MODIFY() → para actualizar valores sin reconstruir todo el documento.

Así se pueden integrar datos semiestructurados dentro de los flujos SQL de una manera sencilla. Esto no sustituye un buen diseño relacional, pero sí ofrece la flexibilidad necesaria para manejar información dinámica o variable de forma elegante y eficiente.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
  • Nuevo conversor de timestamp Unix en el laboratorio de Analytics Lane
  • Calculadora de Contrastes de Hipótesis: interpreta correctamente el p-valor y toma decisiones estadísticas con confianza
  • Calculadora de Tamaño del Efecto: la herramienta clave para entender cuánto importa realmente una diferencia
  • Simulador de DBSCAN: descubre cómo encontrar clusters reales (y ruido) sin fijar K
  • Conversor de Colores: convierte, compara y valida cualquier color en tiempo real
  • Analytics Lane lanza su Generador de UUIDs: identificadores únicos, seguros y listos para producción en segundos
  • 1200 publicaciones en Analytics Lane
  • Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas

Publicado en: Herramientas Etiquetado como: SQL, SQL Server

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Noticias

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

mayo 18, 2026 Por Daniel Rodríguez

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

mayo 14, 2026 Por Daniel Rodríguez

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

mayo 12, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Revisión del Lenovo ThinkBook 14 Gen 3 AMD publicado el abril 22, 2022 | en Reseñas
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • Identificar y eliminar duplicados en Excel publicado el marzo 13, 2019 | en Herramientas
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto