Compartir vía


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:

Consulte también

OPENJSON (Transact-SQL)