Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2016 (13.x) и более поздних версий
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL база данных в Microsoft Fabric Preview
Используйте 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 и реляционными решениями)