SQL Server 및 클라이언트 앱에서 FOR JSON 출력 사용(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics (서버리스 SQL 풀 한정)
다음 예제에서는 SQL Server 또는 클라이언트 앱에서 FOR JSON 절 및 해당 JSON 출력을 사용하는 몇 가지 방법을 보여 줍니다.
SQL Server 변수에서 FOR JSON 출력 사용
FOR JSON 절의 출력은 NVARCHAR(MAX) 형식이므로 다음 예제에 나와 있는 것처럼 어떤 변수에나 할당할 수 있습니다.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
SQL Server 사용자 정의 함수에서 FOR JSON 출력 사용
결과 집합의 형식을 JSON으로 지정하는 사용자 정의 함수를 만든 다음 이 JSON 출력을 반환할 수 있습니다. 다음 예제에서는 일부 판매 주문 세부 정보 행을 가져오고 JSON 배열로 형식을 지정하는 사용자 정의 함수를 만듭니다.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
다음 예제와 같이 일괄 처리 또는 쿼리에서 이 함수를 사용할 수 있습니다.
DECLARE @x NVARCHAR(MAX) = dbo.GetSalesOrderDetails(43659)
PRINT dbo.GetSalesOrderDetails(43659)
SELECT TOP 10
H.*, dbo.GetSalesOrderDetails(H.SalesOrderId) AS Details
FROM Sales.SalesOrderHeader H
부모 및 자식 데이터를 단일 테이블로 병합
다음 예제에서 각 자식 행 집합은 JSON 배열로 형식 지정됩니다. JSON 배열은 부모 테이블의 Details 열 값이 됩니다.
SELECT TOP 10 SalesOrderId, OrderDate,
(SELECT TOP 3 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE H.SalesOrderId = D.SalesOrderID
FOR JSON AUTO) AS Details
INTO SalesOrder
FROM Sales.SalesOrderHeader H
JSON 열의 데이터 업데이트
다음 예제에서는 JSON 텍스트가 포함된 열의 값을 업데이트할 수 있음을 보여 줍니다.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
C# 클라이언트 앱에서 FOR JSON 출력 사용
다음 예제에서는 쿼리의 JSON 출력을 C# 클라이언트 앱의 StringBuilder 개체로 검색하는 방법을 보여 있습니다. 여기서 queryWithForJson
변수에는 FOR JSON 절이 들어 있는 SELECT 문의 텍스트가 포함되어 있다고 가정합니다.
var queryWithForJson = "SELECT ... FOR JSON";
using(var conn = new SqlConnection("<connection string>"))
{
using(var cmd = new SqlCommand(queryWithForJson, conn))
{
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
}
}
SQL Server 및 Azure SQL 데이터베이스에서의 JSON에 대해 알아보기
Microsoft 비디오
참고 항목
이 섹션의 일부 비디오 링크는 현재 작동하지 않을 수 있습니다. Microsoft는 이전에 Channel 9에 있던 콘텐츠를 새 플랫폼으로 마이그레이션하고 있습니다. 비디오가 새 플랫폼으로 마이그레이션되면 링크를 업데이트할 예정입니다.
SQL Server 및 Azure SQL 데이터베이스에서 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.