Migración a La Cumbre de innovación:
Obtenga información sobre cómo migrar y modernizar a Azure puede aumentar el rendimiento, la resistencia y la seguridad de su empresa, lo que le permite adoptar completamente la inteligencia artificial.Regístrese ahora
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Azure SQL Database, Base de datos SQL de Fabric y Azure SQL Managed Instance permiten analizar y consultar datos representados en formato de notación de objetos JavaScript (JSON), y exportar los datos relacionales como texto JSON. Los escenarios JSON siguientes están disponibles:
Si tiene un servicio web que toma datos del nivel de base de datos y proporciona una respuesta en formato JSON o marcos JavaScript del lado cliente o bibliotecas que aceptan datos con formato JSON, puede dar formato JSON al contenido de la base de datos directamente en una consulta SQL. Ya no tiene que escribir código de aplicación para dar formato JSON a los resultados de Azure SQL Database o Instancia administrada de Azure SQL ni incluir una biblioteca de serialización de JSON para convertir los resultados tabulares de la consulta y después serializar los objetos en formato JSON. En su lugar, puede usar la cláusula FOR JSON para dar formato JSON a resultados de consultas SQL y usarlos directamente en su aplicación.
En el ejemplo siguiente, se aplica el formato JSON a las filas de la tabla Sales.Customer mediante la cláusula FOR de JSON:
SQL
select CustomerName, PhoneNumber, FaxNumber
from Sales.Customers
FORJSONPATH
La cláusula FOR JSON PATH da formato de texto JSON a los resultados de la consulta. Los nombres de columna se utilizan como claves, mientras que los valores de celda se generan como valores JSON:
Se da al conjunto de resultados formato de matriz JSON, donde cada fila tiene formato de objeto JSON independiente.
PATH indica que puede personalizar el formato de salida de su resultado JSON utilizando la notación de puntos en los alias de columna. La consulta siguiente cambia el nombre de la clave "CustomerName" en el formato JSON de salida y coloca los números de teléfono y fax en el subobjeto "Contact":
SQL
select CustomerName asName, PhoneNumber as [Contact.Phone], FaxNumber as [Contact.Fax]
from Sales.Customers
where CustomerID = 931FORJSONPATH, WITHOUT_ARRAY_WRAPPER
La salida de esta consulta tiene el siguiente aspecto:
En este ejemplo, se devuelve un único objeto JSON en lugar de una matriz al especificarse la opción WITHOUT_ARRAY_WRAPPER. Puede usar esta opción si sabe que va a devolver un solo objeto como resultado de la consulta.
El valor principal de la cláusula FOR JSON es que permite devolver datos jerárquicos complejos desde la base de datos con formato de objetos o matrices JSON anidados. En el ejemplo siguiente se muestra cómo incluir las filas de la tabla Orders que pertenecen a Customer como matriz anidada de Orders:
SQL
select CustomerName asName, PhoneNumber as Phone, FaxNumber as Fax,
Orders.OrderID, Orders.OrderDate, Orders.ExpectedDeliveryDate
from Sales.Customers Customer
join Sales.Orders Orders
on Customer.CustomerID = Orders.CustomerID
where Customer.CustomerID = 931FORJSONAUTO, WITHOUT_ARRAY_WRAPPER
En lugar de enviar consultas diferentes para obtener los datos del cliente y después recuperar una lista de pedidos relacionados, puede obtener todos los datos necesarios con una única consulta, como se muestra en la siguiente salida de ejemplo:
Si no tiene datos con una estructura estricta, si tiene subobjetos complejos, matrices o datos jerárquicos, o si las estructuras de datos evolucionan con el tiempo, el formato JSON puede ayudar a representar cualquier estructura de datos compleja.
JSON es un formato de texto que se puede usar como cualquier otro tipo de cadena. Puede enviar o almacenar datos JSON como un tipo NVARCHAR estándar:
SQL
CREATETABLE Products (
Idintidentity primary key,
Title nvarchar(200),
Datanvarchar(max)
)
goCREATEPROCEDURE InsertProduct(@title nvarchar(200), @jsonnvarchar(max))
ASBEGINinsertinto Products(Title, Data)
values(@title, @json)
END
Los datos JSON usados en este ejemplo se representan mediante el tipo NVARCHAR(MAX). Se puede insertar JSON en esta tabla o proporcionarlo como argumento del procedimiento almacenado mediante sintaxis estándar de Transact-SQL, tal como se muestra en el ejemplo siguiente:
Cualquier lenguaje del lado cliente o biblioteca que funcione con datos de cadena también funciona con datos JSON. JSON se puede almacenar en cualquier tabla que admita el tipo nvarchar, como una tabla optimizada para memoria o una tabla con versiones del sistema. JSON no introduce ninguna restricción en el código del lado cliente ni en el nivel de base de datos.
Consulta de datos JSON
Si tiene datos con formato JSON almacenados en tablas SQL de Azure, las funciones JSON permiten usarlos en cualquier consulta SQL.
Funciones JSON permiten tratar los datos con formato JSON como cualquier otro tipo de datos SQL. Puede extraer fácilmente valores del texto JSON y usar datos JSON en cualquier consulta:
La función JSON_VALUE extrae un valor del texto JSON almacenado en la columna Data. Esta función usa una ruta de acceso de estilo JavaScript para hacer referencia a un valor en el texto JSON para extraerlo. El valor extraído se puede usar en cualquier parte de la consulta SQL.
La función JSON_QUERY es similar a JSON_VALUE. A diferencia de JSON_VALUE, esta función extrae subobjetos complejos, como matrices u objetos ubicados en texto JSON.
La función JSON_MODIFY permite especificar la ruta de acceso del valor en el texto JSON que debe actualizarse, así como un nuevo valor que sobrescribirá el anterior. De esta forma, puede actualizar fácilmente el texto JSON sin volver a analizar la estructura completa.
Dado que JSON se almacena en texto estándar, no existe ninguna garantía de que los valores almacenados en las columnas de texto tengan el formato correcto. Puede comprobar que el texto almacenado en la columna JSON tenga un formato correcto con las restricciones estándar y la función ISJSON:
SQL
ALTERTABLE Products
ADDCONSTRAINT [Data should be formatted asJSON]
CHECK (ISJSON(Data) > 0)
Si el texto de entrada tiene un formato JSON correcto, la función ISJSON devuelve el valor 1. Con cada inserción o actualización de la columna JSON, esta restricción comprobará que el nuevo valor de texto no tenga un formato JSON incorrecto.
Transformación de JSON en formato tabular
Puede transformar colecciones JSON en formato tabular y cargar o consultar datos JSON.
OPENJSON es una función de valores de tabla que analiza texto JSON, busca una matriz de objetos JSON, itera en los elementos de la matriz y devuelve en el resultado de salida una fila para cada elemento de la matriz.
En el ejemplo anterior, se puede especificar dónde ubicar la matriz JSON que se debe abrir (en la ruta de acceso $.Orders), qué columnas se deben devolver como resultado y dónde encontrar los valores JSON que se devolverán como celdas.
Se puede transformar una matriz JSON de la variable @orders en un conjunto de filas, analizar este conjunto de resultados o insertar filas en una tabla estándar:
SQL
CREATEPROCEDURE InsertOrders(@orders nvarchar(max))
ASBEGINinsertinto Orders(Number, Date, Customer, Quantity)
selectNumber, Date, Customer, Quantity
FROM OPENJSON (@orders)
WITH (
Numbervarchar(200),
Date datetime,
Customer varchar(200),
Quantity int
)
END
La colección de pedidos con formato de matriz JSON que se proporciona como parámetro del procedimiento almacenado se puede analizar e insertar en la tabla Orders.
Aprenda a invocar puntos de conexión de REST en Azure SQL Database y a manipular datos mediante Azure Functions. Además, explore varias herramientas y opciones para importar y exportar datos hacia y desde Azure SQL Database.
En este episodio de Datos expuestos con Anna Hoffman y Umachandar Jayachandran, aprenderá a usar documentos JSON de Transact-SQL en Azure SQL Database y SQL Server 2022. Veremos cómo se pueden almacenar documentos JSON en tablas, modificar y consultar en la base de datos. También veremos cómo transformar datos relacionales en JSON y viceversa. Capítulos 00:25 - Introducción 00:45 : JSON en SQL Server 01:39 : demostración del almacenamiento y consulta de JSON en SQL Server 03:00 : Cambio de un documento JSO