Поделиться через


Используйте OPENJSON со схемой по умолчанию

Область применения: SQL Server 2016 (13.x) и более поздние версии База данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse Analytics

Использование OPENJSON со схемой по умолчанию возвращает таблицу, содержащую одну строку для каждого свойства объекта или для каждого элемента в массиве.

Ниже приведены несколько примеров использования OPENJSON со схемой по умолчанию. Дополнительные сведения и дополнительные примеры см. в разделе OPENJSON (Transact-SQL).

Пример. Возвращение каждого свойства объекта

Запрос

SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}') 

Результаты

Ключ Значение
имя Джон
фамилия Доу
возраст 45

Пример. Возвращение каждого элемента массива

Запрос

SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]') 

Результаты

Ключ Значение
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')

Результаты

Ключ Значение Тип
тип 1 0
адрес { "город":"Бристоль", "каунти":"Avon", "страна":"Великобритания" } 5
теги [ "Спорт", "Водное поло" ] 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 Server и базе данных SQL Azure

Видео Майкрософт

Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.

См. также

OPENJSON (Transact-SQL)