• 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
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

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.

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
En Analytics Lane
Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

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.

Publicidad


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.

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.

Publicidad


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.

Publicidad


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.

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?

Publicidad


Publicaciones relacionadas

  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato
  • ¿Media, mediana o moda en variables ordinales? Guía práctica para el análisis de datos
  • Cómo ejecutar JavaScript desde Python: Guía práctica con js2py
  • Cómo generar contraseñas seguras con Python (y entender su nivel de seguridad)
  • Curiosidad: ¿Por qué los datos “raros” son tan valiosos?
  • Detectan vulnerabilidad crítica en MLflow que permite ejecución remota de código
  • ¿Por qué el azar no es tan aleatorio como parece?
  • Cómo crear un Data Lake en Azure paso a paso

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

Guía definitiva para trabajar con JSON en SQL Server

noviembre 18, 2025 Por Daniel Rodríguez

Cómo crear un Data Lake en Azure paso a paso

noviembre 13, 2025 Por Daniel Rodríguez

¿Por qué el azar no es tan aleatorio como parece?

noviembre 11, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas
  • Diferencias entre regresión y clasificación en aprendizaje automático publicado el noviembre 26, 2018 | en Ciencia de datos
  • Codificación JSON Archivos JSON con Python: lectura y escritura publicado el julio 16, 2018 | en Python
  • pandas Pandas: Cómo crear un DataFrame vacío y agregar datos publicado el noviembre 16, 2020 | en Python
  • Duplicado Eliminar registros duplicados en pandas publicado el junio 20, 2018 | 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.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • 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
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

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-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto