Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database in Microsoft Fabric
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, consulte OPENJSON (Transact-SQL).
Exemplo - Retornar cada propriedade de um objeto
Query
SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}')
Results
| Key | Value |
|---|---|
| name | John |
| surname | Doe |
| age | 45 |
Exemplo - Retornar cada elemento de uma 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 |
Exemplo - Converter JSON em uma tabela temporária
A consulta a seguir retorna todas as propriedades do 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')
Results
| Key | Value | Tipo |
|---|---|---|
| tipo | 1 | 0 |
| address | { "town":"Bristol", "county":"Avon", "country":"Grã-Bretanha" } | 5 |
| tags | [ "Desporto", "Polo aquático" ] | 4 |
Exemplo - Combinar dados relacionais 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 SalesOrderReasons contêm propriedades como "Fabricante" e "Qualidade". O exemplo cria um relatório que une cada linha de 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 filho separada.
SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)
Neste exemplo, OPENJSON retorna uma tabela de motivos de vendas na qual os motivos aparecem como a coluna de valor. O operador CROSS APPLY une cada linha de ordem de venda às linhas retornadas pela função de valor de tabela OPENJSON.
Saiba mais sobre JSON no Mecanismo de Banco de Dados SQL
Vídeos da Microsoft
Para obter uma introdução visual ao suporte JSON integrado, consulte os seguintes vídeos: