다음을 통해 공유


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

적용 대상:Azure SQL 데이터베이스Azure SQL Managed Instance

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 형식은 2024년에 Azure SQL Database 및 Azure SQL Managed Instance에 도입되었습니다.

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

참고 항목

JSON 데이터 형식 현재 Azure SQL Database 및 Azure SQL Managed Instance에 대해 미리 보기로 제공되며 Always-up-to-date 업데이트 정책구성됩니다. SQL Server 2022 업데이트 정책구성된 Azure SQL Managed Instance에서는 사용할 수 없습니다.

함수 지원

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

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

인덱스

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

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

전환

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

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

사용하여 varchar(max) 열과 같은 기존 열을 ALTER TABLE 변환할 수 있습니다. xml 데이터 형식과 마찬가지로 사용하여 ALTER TABLE 열을 문자열 또는 이진 형식으로 변환할 수 없습니다.

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

호환성

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

현재 bcp 도구의 네이티브 형식에는 json 문서가 varchar 또는 nvarchar로 포함되어 있습니다. 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 표시됩니다.
    • 현재 TDS 7.4는 데이터베이스 데이터 정렬을 사용하여 nvarchar(max) 확인합니다.
  • 현재 OPENJSON() 함수는 암시적 변환인 json 형식을 허용하지 않습니다. 먼저 nvarchar(max)로 명시적으로 변환하세요.