AUTO 모드를 사용하여 JSON 출력 형식 자동 지정(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics (서버리스 SQL 풀 한정)
SELECT 문의 구조에 따라 FOR JSON 절 출력 형식을 자동으로 지정하려면 AUTO 옵션을 지정합니다.
AUTO 옵션을 지정하면 SELECT 목록의 열 순서와 해당 원본 테이블에 따라 JSON 출력의 형식이 자동으로 결정됩니다. 이 형식은 변경할 수 없습니다.
대신 PATH 옵션을 사용하여 출력에 대한 제어를 관리합니다.
- PATH 옵션에 대한 자세한 내용은 PATH 모드로 중첩 JSON 출력 서식 지정을 참조하세요.
- 두 옵션에 대한 개요는 FOR JSON을 사용하여 쿼리 결과 서식을 JSON으로 지정을 참조하세요.
FOR JSON AUTO 옵션을 사용하는 쿼리에는 FROM 절이 있어야 합니다.
아래에는 AUTO 옵션이 있는 FOR JSON 절의 몇 가지 예가 나와 있습니다. Azure Data Studio는 일반 문자열을 표시하는 대신 이 문서에 표시된 대로 JSON 결과에 서식을 자동으로 지정하므로 JSON 쿼리에 권장되는 쿼리 편집기입니다.
예제
예 1
쿼리
쿼리에서 하나의 테이블만 참조하는 경우 FOR JSON AUTO 절의 결과는 FOR JSON PATH의 결과와 비슷합니다. 이 경우 FOR JSON AUTO는 중첩된 개체를 만들지 않습니다. 유일한 차이점은 FOR JSON AUTO는 점으로 구분된 별칭(예를 들어 다음 예제에서 Info.MiddleName
)을 중첩된 개체가 아닌 점이 있는 키로 출력한다는 것입니다.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
결과
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"Info.MiddleName": "J"
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info.MiddleName": "Lee"
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info.Title": "Ms.",
"Info.MiddleName": "A"
}]
예제 2
쿼리
테이블을 조인하면 첫 번째 테이블의 열이 루트 개체의 속성으로 생성됩니다. 두 번째 테이블의 열은 중첩된 개체의 속성으로 생성됩니다. 두 번째 테이블의 테이블 이름 또는 별칭(예: 다음 예제의 D
)은 중첩된 배열의 이름으로 사용됩니다.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
결과
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO43659",
"D": [{
"UnitPrice": 34.40
}, {
"UnitPrice": 134.24,
"OrderQty": 5
}]
}]
예제 3
쿼리
FOR JSON AUTO를 사용하는 대신 다음 예제와 같이 SELECT 문에 FOR JSON PATH 하위 쿼리를 중첩할 수 있습니다. 이 예제에서 출력되는 결과는 앞서 예제와 동일합니다.
SELECT TOP 2
SalesOrderNumber,
OrderDate,
(SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail AS D
WHERE H.SalesOrderID = D.SalesOrderID
FOR JSON PATH) AS D
FROM Sales.SalesOrderHeader AS H
FOR JSON PATH
결과
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
SQL Server 및 Azure SQL 데이터베이스에서의 JSON에 대해 알아보기
Microsoft 비디오
SQL Server 및 Azure SQL 데이터베이스에서 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.