적용 대상: SQL Server 2016(13.x) 이상 버전
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics(서버리스 SQL 풀에만 해당)
Microsoft Fabric
Warehouse의 SQL 분석 엔드포인트
SELECT
문의 구조에 따라 자동으로 FOR JSON
절의 출력 형식을 지정하려면 AUTO
옵션을 지정합니다.
AUTO
옵션을 지정하면 SELECT 목록의 열 순서와 원본 테이블에 따라 JSON 출력 형식이 자동으로 결정됩니다. 이 형식은 변경할 수 없습니다.
대안은 PATH
옵션을 사용하여 출력에 대한 제어를 유지하는 것입니다.
-
PATH
옵션에 대한 자세한 내용은 PATH 모드중첩된 JSON 출력 서식을 참조하세요. - 두 옵션에 대한 개요는 "FOR JSON"을 사용한 쿼리 결과를JSON으로 서식 지정하기를 참조하세요.
FOR JSON AUTO
옵션을 사용하는 쿼리에는 FROM
절이 있어야 합니다.
다음은 FOR JSON
절의 AUTO
옵션이 있는 몇 가지 예입니다.
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 Database 엔진의 JSON에 대해 자세히 알아보기
SQL Server 및 Azure SQL 데이터베이스에서 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.