Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: 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 и реляционными решениями)