Uso de OPENJSON con el esquema predeterminado
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
Use OPENJSON con el esquema predeterminado para devolver una tabla con una fila por cada propiedad del objeto o por cada elemento de la matriz.
Estos son algunos ejemplos que utilizan OPENJSON con el esquema predeterminado. Para obtener más información y más ejemplos, consulte OPENJSON (Transact-SQL).
Ejemplo: Devolución de cada propiedad de un objeto
Consultar
SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}')
Resultados
Clave | Value |
---|---|
nombre | John |
surname | Doe |
age | 45 |
Ejemplo: Devolución de cada elemento de una matriz
Consultar
SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]')
Resultados
Clave | Valor |
---|---|
0 | en-GB |
1 | en-UK |
2 | de-AT |
3 | es-AR |
4 | sr-Cyrl |
Ejemplo: Convertir JSON a una tabla temporal
La siguiente consulta devuelve todas las propiedades del objeto info .
DECLARE @json NVARCHAR(MAX)
SET @json=N'{
"info":{
"type":1,
"address":{
"town":"Bristol",
"county":"Avon",
"country":"Great Britain"
},
"tags":["Sport", "Water polo"]
},
"type":"Basic"
}'
SELECT *
FROM OPENJSON(@json,N'lax $.info')
Resultados
Clave | Valor | Tipo |
---|---|---|
type | 1 | 0 |
address | { "town":"Bristol", "county":"Avon", "country":"Great Britain" } | 5 |
etiquetas | [ "Sport", "Water polo" ] | 4 |
Ejemplo: Combinar datos relacionales y datos JSON
En el ejemplo siguiente, la tabla SalesOrderHeader tiene una columna de texto SalesReason que contiene una matriz de SalesOrderReasons en formato JSON. Los objetos SalesOrderReasons contienen propiedades como "Fabricante" y "Calidad". En el ejemplo se crea un informe que combina todas las filas de pedidos de ventas y las razones de venta relacionadas expandiendo la matriz JSON de razones de venta como si las razones se almacenaran en una tabla secundaria independiente.
SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)
En este ejemplo, OPENJSON devuelve una tabla de razones de venta en la que las razones aparecen como la columna de valor. El operador CROSS APPLY combina cada fila de pedido de ventas con las filas devueltas por la función con valores de tabla OPENJSON.
Más información sobre JSON en SQL Server y Azure SQL Database
Vídeos de Microsoft
Para obtener una introducción visual a la compatibilidad integrada de JSON en SQL Server y Azure SQL Database, vea los siguientes vídeos:
- JSON as a bridge between NoSQL and relational worlds (JSON como puente entre los universos NoSQL y relacional)