Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a: SQL Server 2016 (13.x) y versiones
posteriores Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (solo servidor SQL pool)
endpoint SQL Analytics en Microsoft Fabric
Warehouse en Microsoft Fabric
Database SQL en Microsoft Fabric
Use OPENJSON con un esquema explícito para devolver una tabla con formato tal como se especifica en la WITH cláusula .
Estos son algunos ejemplos que usan OPENJSON con un esquema explícito. Para obtener más información, vea OPENJSON (Transact-SQL).
Ejemplo - Uso de la cláusula WITH para dar formato a la salida
La siguiente consulta devuelve los resultados mostrados en la tabla siguiente. Observe cómo la AS JSON cláusula hace que los valores se devuelvan como objetos JSON en lugar de valores escalares en col5 y 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
)
Results
| k1 | k2 | col3 | col4 | col5 | array_element |
|---|---|---|---|---|---|
| 11 | NULL | "text" | NULL | NULL | {"k1": 11, "k2": nulo, "k3": "texto"} |
| 21 | "text2" | NULL | "text4" | { "data": "text4" } | {"K1": Cierto, "K2": "Texto2", "K4": { "Datos": "Texto4" } } |
| 31 | "32" | NULL | NULL | NULL | {"K1": 31, "K2": 32 } |
| 41 | NULL | NULL | false | { "data": false } | {"k1": 41, "k2": null, "k4": { "data": false } } |
Ejemplo: Carga de JSON en una tabla de SQL Server.
En el ejemplo siguiente se carga un objeto JSON completo en una tabla de 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))
Más información sobre JSON en el motor de base de datos de SQL
Para obtener una introducción visual a la compatibilidad integrada con JSON, consulte los vídeos siguientes:
- JSON as a bridge between NoSQL and relational worlds (JSON como puente entre los universos NoSQL y relacional)