Usar OPENJSON com o esquema padrão

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse Analytics

Use OPENJSON com o esquema padrão para retornar uma tabela com uma linha para cada propriedade do objeto ou para cada elemento na matriz.

Aqui estão alguns exemplos que usam OPENJSON com o esquema padrão. Para obter mais informações e mais exemplos, veja OPENJSON (Transact-SQL).

Exemplo – retornar cada propriedade de um objeto

Consulta

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

Resultados

Chave Valor
name John
sobrenome Doe
age 45

Exemplo – retornar cada elemento de uma matriz

Consulta

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

Resultados

Chave Valor
0 en-GB
1 en-UK
2 de-AT
3 es-AR
4 sr-Cyrl

Exemplo – converter JSON em uma tabela temporária

A consulta a seguir retorna todas as propriedades do objeto informações .

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

Chave Valor Tipo
tipo 1 0
address { "cidade":"Bristol", "condado":"Avon", "país":"Grã-Bretanha" } 5
tags ["Esporte", "Polo aquático"] 4

Exemplo – combinar dados relacionais combinar e dados JSON

No exemplo a seguir, a tabela SalesOrderHeader tem uma coluna de texto SalesReason que contém uma matriz de SalesOrderReasons no formato JSON. Os objetos SalesOrderReasonsm contêm propriedades como “Fabricante” e “Qualidade”. O exemplo cria um relatório que une cada linha da ordem de venda aos motivos de vendas relacionados expandindo a matriz JSON de motivos de vendas como se os motivos estivessem armazenados em uma tabela secundária separada.

SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)

Neste exemplo, OPENJSON retorna uma tabela de motivos de vendas em que as razões aparecem como a coluna de valor. O operador CROSS APPLY une cada linha do pedido de venda às linhas retornadas pela função com valor de tabela OPENJSON.

Saiba mais sobre JSON no SQL Server e no Banco de Dados SQL do Azure

Vídeos da Microsoft

Para obter uma introdução visual ao suporte interno para JSON no SQL Server e no Banco de Dados SQL do Azure, consulte os seguintes vídeos:

Confira também

OPENJSON (Transact-SQL)