Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к: SQL Server 2016 (13.x) и более поздним версиям
Базе данных SQL Azure
Управляемому экземпляру SQL Azure
Azure Synapse Analytics (только бессерверный пул SQL)
конечной точке аналитики SQL в хранилище microsoft Fabric
в Microsoft Fabric
Используйте OPENJSON
с явной схемой, чтобы вернуть таблицу, формат которой вы указываете в операторе WITH.
Ниже приведены некоторые примеры, которые используют OPENJSON
с явной схемой. Дополнительные сведения и дополнительные примеры см. в разделе OPENJSON (Transact-SQL).
Пример использования предложения WITH для форматирования выходных данных
Следующий запрос возвращает результаты, показанные в таблице ниже. Обратите внимание, что предложение AS JSON
приводит к возврату значений в виде объектов JSON вместо скалярных значений в col5
и 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
)
Результаты
k1 | k2 | col3 | col4 | col5 | элемент массива |
---|---|---|---|---|---|
11 | NULL | текст | NULL | NULL | {"k1": 11, "k2": null, "k3": "text"} |
двадцать один | "текст2" | NULL | "текст4" | { "data": "text4" } | {"k1": true, "k2": "text2", "k4": { "data": "text4" } } |
31 | "32" | NULL | NULL | NULL | {"k1": 31, "k2": 32 } |
41 | NULL | NULL | ложь | { "данные": ложь } | {"k1": 41, "k2": null, "k4": { "data": false } } |
Пример. Загрузка JSON в таблицу SQL Server.
В следующем примере загружается весь объект JSON в таблицу 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))
Дополнительные сведения о JSON в ядре СУБД SQL
Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)