Compartir a través de


Uso de OPENJSON con el esquema predeterminado

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics SQL Database en Microsoft Fabric

Use OPENJSON con el esquema predeterminado para devolver una tabla con una fila para cada propiedad del objeto o para cada elemento de la matriz.

Estos son algunos ejemplos que usan OPENJSON con el esquema predeterminado. Para obtener más información y más ejemplos, consulta OPENJSON (Transact-SQL).

Ejemplo: Devolución de cada propiedad de un objeto

Query

SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}') 

Results

Key Value
name John
surname Doe
age 45

Ejemplo: Devolución de cada elemento de una matriz

Query

SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]') 

Results

Key Value
0 en-GB
1 en-UK
2 de-AT
3 es-AR
4 sr-Cyrl

Ejemplo: Convertir JSON a una tabla temporal

La consulta siguiente devuelve todas las propiedades del objeto de información .

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')

Results

Key Value Type
type 1 0
address { "town":"Bristol", "county":"Avon", "country":"Great Britain" } 5
tags [ "Sport", "Waterpolo" ] 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 el motor de base de datos de SQL

Vídeos de Microsoft

Para obtener una introducción visual a la compatibilidad integrada con JSON, consulte los vídeos siguientes: