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, varchar 및 nvarchar 형식으로 명시적 변환을 수행할 수 있습니다.
xml의 동작과 유사하게 모든 암시적 변환은 허용되지 않습니다. 마찬가지로, char, nchar, varchar 및 nvarchar만 json 형식으로 명시적 변환이 가능합니다.
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) 확인합니다.
- 현재 TDS >= 7.4(UTF-8 포함)에는
현재
OPENJSON()
함수는 암시적 변환인 json 형식을 허용하지 않습니다. 먼저 nvarchar(max)로 명시적으로 변환하세요.