기본 스키마와 함께 OPENJSON 사용(SQL Server)Use OPENJSON with the Default Schema (SQL Server)

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

기본 스키마와 함께 OPENJSON 을 사용하는 경우 개체의 각 속성 또는 배열의 각 요소에 대해 행 한 개가 있는 테이블이 반환됩니다.Use OPENJSON with the default schema to returns a table with one row for each property of the object or for each element in the array.

아래에는 기본 스키마와 함께 OPENJSON 을 사용하는 몇 가지 예가 나와 있습니다.Here are some examples that use OPENJSON with the default schema. 자세한 내용 및 더 많은 예제를 보려면 OPENJSON(Transact-SQL)을 참조하세요.For more info and more examples, see OPENJSON (Transact-SQL).

예 - 개체의 각 속성 반환Example - Return each property of an object

QueryQuery

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

결과Results

KeyKey Value
namename JohnJohn
surnamesurname DoeDoe
ageage 4545

예 - 배열의 각 요소 반환Example - Return each element of an array

QueryQuery

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

결과Results

KeyKey Value
00 en-GBen-GB
11 en-UKen-UK
22 de-ATde-AT
33 es-ARes-AR
44 sr-Cyrlsr-Cyrl

예 - JSON을 임시 테이블로 변환Example - Convert JSON to a temporary table

다음 쿼리는 info 개체의 모든 속성을 반환합니다.The following query returns all properties of the info object.

DECLARE @json NVARCHAR(MAX)

SET @json=N'{  
     "info":{    
       "type":1,  
       "address":{    
         "town":"Bristol",  
         "county":"Avon",  
         "country":"England"  
       },  
       "tags":["Sport", "Water polo"]  
    },  
    "type":"Basic"  
 }'

SELECT *
FROM OPENJSON(@json,N'lax $.info')

결과Results

KeyKey Value 형식Type
형식type 11 00
addressaddress { "town":"Bristol", "county":"Avon", "country":"England" }{ "town":"Bristol", "county":"Avon", "country":"England" } 55
tagstags [ "Sport", "Water polo" ][ "Sport", "Water polo" ] 44

예 - 관계형 데이터와 JSON 데이터 결합Example - Combine relational data and JSON data

다음 예에서는 SalesOrderHeader 테이블에 JSON 형식의 SalesOrderReasons 배열을 포함하는 SalesReason 텍스트 열이 있습니다.In the following example, the SalesOrderHeader table has a SalesReason text column that contains an array of SalesOrderReasons in JSON format. SalesOrderReasons 개체는 "Manufacturer", "Quality" 등의 속성을 포함합니다.The SalesOrderReasons objects contain properties like "Manufacturer" and "Quality". 이 예에서는 판매 이유가 별도의 자식 테이블에 저장된 것처럼 JSON 판매 이유 배열을 확장하여 모든 판매 주문 행을 관련 판매 이유에 연결하는 보고서를 만듭니다.The example creates a report that joins every sales order row to the related sales reasons by expanding the JSON array of sales reasons as if the reasons were stored in a separate child table.

SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)

이 예에서 OPENJSON은 이유가 값 열로 표시되는 판매 이유 테이블을 반환합니다.In this example, OPENJSON returns a table of sales reasons in which the reasons appear as the value column. CROSS APPLY 연산자는 각 판매 주문 행을 OPENJSON 테이블 반환 함수가 반환하는 행에 연결합니다.The CROSS APPLY operator joins each sales order row to the rows returned by the OPENJSON table-valued function.

SQL Server의 기본 제공 JSON 지원에 대한 자세한 정보Learn more about the built-in JSON support in SQL Server

많은 특정 솔루션, 사용 사례 및 권장 사항은 Microsoft 프로그램 관리자인 Jovan Popovic이 제공하는 SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 블로그 게시물을 참조하세요.For lots of specific solutions, use cases, and recommendations, see the blog posts about the built-in JSON support in SQL Server and in Azure SQL Database by Microsoft Program Manager Jovan Popovic.

관련 항목:See Also

OPENJSON(Transact-SQL)OPENJSON (Transact-SQL)