Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2016 (13.x) и более поздние версии
: Azure SQL Database Azure
SQL Managed Instance
AzureSynapse Analytics
SQL database in Microsoft Fabric
Используйте OPENJSON схему по умолчанию для возврата таблицы с одной строкой для каждого свойства объекта или для каждого элемента в массиве.
Ниже приведены некоторые примеры, использующие OPENJSON со схемой по умолчанию. Дополнительные сведения и дополнительные примеры см. в разделе OPENJSON (Transact-SQL).
Пример. Возвращение каждого свойства объекта
Query
SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}')
Results
| Key | Value |
|---|---|
| name | John |
| surname | Doe |
| age | 45 |
Пример. Возвращение каждого элемента массива
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 |
Пример. Преобразование JSON во временную таблицу
Следующий запрос возвращает все свойства объекта 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 | Type |
|---|---|---|
| type | 1 | 0 |
| address | { "город":"Бристоль", "каунти":"Avon", "страна":"Великобритания" } | 5 |
| tags | [ "Спорт", "Водное поло" ] | 4 |
Пример. Объединение реляционных данных и данных JSON
В следующем примере таблица SalesOrderHeader имеет текстовый столбец SalesReason, содержащий массив SalesOrderReasons в формате JSON. Объекты SalesOrderReasons содержат такие свойства, как "Производитель" и "Качество". В примере создается отчет, который объединяет каждую строку заказа на продажу с соответствующими причинами продаж путем расширения массива причин продаж JSON, как если бы причины хранились в отдельной дочерней таблице.
SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)
В этом примере OPENJSON возвращает таблицу причин покупки, в которой причины отображаются как столбец значений. Оператор CROSS APPLY связывает каждую строку заказа на продажу с теми строками, которые возвращает функция OPENJSON с табличным значением.
Дополнительные сведения о JSON в ядре СУБД SQL
Видео Майкрософт
Дополнительные сведения о встроенной поддержке JSON см. в следующих видео:
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)