다음을 통해 공유


JSON 데이터 형식(미리 보기)

적용 대상:Azure SQL Database

JSON 문서를 네이티브 이진 형식으로 저장하는 새로운 네이티브 json 데이터 형식입니다.

json 형식은 쿼리 및 조작이 용이하도록 최적화된 JSON 문서의 고충실도 스토리지를 제공하며, varchar 또는 nvarchar에 JSON 데이터를 저장하는 것보다 다음과 같은 이점을 제공합니다.

  • 문서가 이미 구문 분석되어 있어 더 효율적인 읽기
  • 쿼리가 전체 문서에 액세스하지 않고 개별 값을 업데이트할 수 있어 더 효율적인 쓰기
  • 압축에 최적화되어 더 효율적인 스토리지
  • 기존 코드와의 호환성에는 변경 사항 없음

json 형식은 UTF-8 인코딩인 Latin1_General_100_BIN2_UTF8을 사용하여 데이터를 내부적으로 저장합니다. 이 동작은 JSON 사양과 일치합니다.

JSON 데이터 쿼리에 대한 자세한 내용은 SQL Server에서 JSON 데이터 사용을 참조하세요.

샘플 구문

json 형식의 사용 구문은 테이블의 다른 모든 SQL Server 데이터 형식과 유사합니다.

column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]

json 형식은 CREATE TABLE 문에 포함된 열 정의에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);

제약 조건은 열 정의의 일부로 지정할 수 있습니다. 예를 들면 다음과 같습니다.

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
   CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1
);

기능 가용성

JSON 지원은 SQL Server 2016(13.x)에서 처음 도입되었으며, 주로 JSON 함수의 형태로 제공됩니다. 새로운 네이티브 json 형식은 2024년에 Azure SQL 플랫폼에 먼저 도입되었습니다.

JSON은 모든 데이터베이스 호환성 수준에서 사용할 수 있습니다.

참고 항목

현재 json 형식은 Azure SQL Database에서 미리 보기로 제공됩니다.

함수 지원

모든 JSON 함수는 코드 변경이나 사용법의 차이 없이 json 형식을 지원합니다.

JSON 함수의 전체 목록은 JSON 함수를 참조하세요.

인덱스

JSON 데이터에 대한 특수한 인덱스 형식은 없습니다.

json 형식은 CREATE INDEX 문에서 키 열로 사용할 수 없습니다. 그러나 json 열은 인덱스 정의에 포함된 열로 지정할 수 있습니다. 또한 json 열은 필터링된 인덱스의 WHERE 절에 나타날 수 있습니다.

전환

json 형식에서 CAST 또는 CONVERT를 사용하여 char, nchar, varcharnvarchar 형식으로 명시적 변환을 수행할 수 있습니다. xml의 동작과 유사하게 모든 암시적 변환은 허용되지 않습니다. 마찬가지로, char, nchar, varcharnvarcharjson 형식으로 명시적 변환이 가능합니다.

json 형식은 sql_variant 형식과 함께 사용하거나 sql_variant 변수 또는 열에 할당할 수 없습니다. 이 제한은 varchar(max), varbinary(max), nvarchar(max), xml, CLR 기반 데이터 형식과 유사합니다.

자세한 내용은 데이터 형식 변환을 참조하세요.

호환성

json 형식은 사용자 정의 함수의 매개 변수 또는 반환 형식 또는 저장 프로시저의 매개 변수로 사용할 수 있습니다. json 형식은 트리거 및 뷰와 호환됩니다.

현재 bcp 도구의 네이티브 형식에는 json 문서가 varchar 또는 nvarchar로 포함되어 있습니다. json 데이터 형식 열을 지정하려면 서식 파일을 지정해야 합니다.

json 형식에 CREATE TYPE을 사용하여 별칭 형식을 만드는 것은 허용되지 않습니다. 이는 xml 형식과 동일한 동작입니다.

JSON 형식과 SELECT ... INTO를 함께 사용하면 JSON 형식의 테이블이 생성됩니다.

제한 사항

  • CAST ( ... AS JSON) 동작은 json 형식을 반환하지만 sp_describe_first_result_set 시스템 저장 프로시저는 json 데이터 형식을 올바르게 반환하지 않습니다. 따라서 많은 데이터 액세스 클라이언트와 드라이버에 varchar 또는 nvarchar 데이터 형식이 표시됩니다.

    • 현재 TDS >= 7.4(UTF-8 사용) 지원에서는 Latin_General_100_bin2_utf8이 포함된 varchar(max)가 표시됩니다.
    • 현재 TDS < 7.4 지원에서는 데이터베이스 데이터 정렬이 포함된 nvarchar(max)가 표시됩니다.
  • 현재 OPENJSON() 함수는 암시적 변환인 json 형식을 허용하지 않습니다. 먼저 nvarchar(max)로 명시적으로 변환하세요.