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


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

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

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

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

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

Запрос

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

Результаты

Ключ Значение
name Джон
surname; Доу
возраст 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')

Результаты

Ключ Значение Тип
type 1 0
address { "город":"Бристоль", "каунти":"Avon", "страна":"Великобритания" } 5
tags [ "Sport", "Water polo" ] 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)