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
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Azure Synapse Analytics (somente pool SQL sem servidor)
ponto de extremidade de análise SQL no Microsoft Fabric
Warehouse no Microsoft Fabric
Use OPENJSON
com um esquema explícito para retornar uma tabela formatada conforme especificado na cláusula WITH.
Aqui estão alguns exemplos que usam OPENJSON
com um esquema explícito. Para obter mais informações e mais exemplos, consulte OPENJSON (Transact-SQL).
Exemplo - Use a cláusula WITH para formatar a saída
A consulta a seguir retorna os resultados mostrados na tabela a seguir. Observe como a cláusula AS JSON
faz com que os valores sejam retornados como objetos JSON em vez de valores escalares em col5
e array_element
.
DECLARE @json NVARCHAR(MAX) =
N'{"someObject":
{"someArray":
[
{"k1": 11, "k2": null, "k3": "text"},
{"k1": 21, "k2": "text2", "k4": { "data": "text4" }},
{"k1": 31, "k2": 32},
{"k1": 41, "k2": null, "k4": { "data": false }}
]
}
}'
SELECT * FROM
OPENJSON(@json, N'lax $.someObject.someArray')
WITH ( k1 int,
k2 varchar(100),
col3 varchar(6) N'$.k3',
col4 varchar(10) N'lax $.k4.data',
col5 nvarchar(MAX) N'lax $.k4' AS JSON,
array_element nvarchar(MAX) N'$' AS JSON
)
Resultados
k1 | k2 | col3 | col4 | col5 | elemento_do_array |
---|---|---|---|---|---|
11 | NULL | "texto" | NULL | NULL | {"k1": 11, "k2": nulo, "k3": "texto"} |
21 | texto2 | NULL | text4 | { "data": "text4" } | {"k1": true, "k2": "text2", "k4": { "data": "text4" } } |
31 | "32" | NULL | NULL | NULL | {"k1": 31, "k2": 32 } |
41 | NULL | NULL | falso | { "data": false } | {"k1": 41, "k2": null, "k4": { "data": false } } |
Exemplo - Carregue JSON em uma tabela do SQL Server.
O exemplo a seguir carrega um objeto JSON inteiro em uma tabela do SQL Server.
DECLARE @json NVARCHAR(MAX) = '{
"id" : 2,
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"dateOfBirth": "2015-03-25T12:00:00",
"spouse": null
}';
INSERT INTO Person
SELECT *
FROM OPENJSON(@json)
WITH (id int,
firstName nvarchar(50), lastName nvarchar(50),
isAlive bit, age int,
dateOfBirth datetime2, spouse nvarchar(50))
Saiba mais sobre JSON no Mecanismo de Banco de Dados SQL
Para obter uma introdução visual ao suporte JSON interno no SQL Server e no Banco de Dados SQL do Azure, consulte os seguintes vídeos: