nchar 및 nvarchar(Transact-SQL)nchar and nvarchar (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

고정 크기(nchar) 또는 가변 크기(nvarchar)인 문자 데이터 형식입니다.Character data types that are either fixed-size, nchar, or variable-size, nvarchar. SQL Server 2012(11.x)SQL Server 2012 (11.x)부터 SC(보조 문자) 사용 데이터 정렬을 사용할 때 이러한 데이터 형식은 전체 범위의 유니코드 문자 데이터를 저장하고 UTF-16 문자 인코딩을 사용합니다.Starting with SQL Server 2012(11.x)SQL Server 2012 (11.x), when a Supplementary Character (SC) enabled collation is used, these data types store the full range of Unicode character data and use the UTF-16 character encoding. SC가 아닌 데이터 정렬이 지정된 경우 이러한 데이터 형식은 UCS-2 문자 인코딩에서 지원하는 문자 데이터의 하위 집합만 저장합니다.If a non-SC collation is specified, then these data types store only the subset of character data supported by the UCS-2 character encoding.

인수Arguments

nchar [ ( n ) ]nchar [ ( n ) ]
고정 크기 문자열 데이터입니다.Fixed-size string data. n은 바이트 쌍으로 문자열 크기를 정의하며 1에서 4,000 사이의 값이어야 합니다.n defines the string size in byte-pairs and must be a value from 1 through 4,000. 스토리지 크기는 n바이트의 두 배입니다.The storage size is two times n bytes. UCS-2 인코딩의 경우 스토리지 크기는 n바이트의 두 배이고 저장할 수 있는 문자 수도 n입니다.For UCS-2 encoding, the storage size is two times n bytes and the number of characters that can be stored is also n. UTF-16 인코딩의 경우 스토리지 크기는 여전히 n바이트의 두 배이지만, 보조 문자가 2바이트 쌍(서로게이트 쌍이라고도 함)을 사용하기 때문에 저장할 수 있는 문자 수는 n보다 작을 수 있습니다.For UTF-16 encoding, the storage size is still two times n bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). nchar의 ISO 동의어는 national charnational character입니다.The ISO synonyms for nchar are national char and national character.

nvarchar [ ( n | max ) ]nvarchar [ ( n | max ) ]
가변 크기 문자열 데이터입니다.Variable-size string data. n은 바이트 쌍으로 문자열 길이를 정의하며 1에서 4,000 사이의 값일 수 있습니다.n defines the string size in byte-pairs and can be a value from 1 through 4,000. max는 최대 스토리지 크기가 2^30-1자(2GB)임을 나타냅니다.max indicates that the maximum storage size is 2^30-1 characters (2 GB). 스토리지 크기는 n바이트 + 2바이트의 두 배입니다.The storage size is two times n bytes + 2 bytes. UCS-2 인코딩의 경우 스토리지 크기는 n바이트 + 2바이트의 두 배이고 저장할 수 있는 문자 수도 n입니다.For UCS-2 encoding, the storage size is two times n bytes + 2 bytes and the number of characters that can be stored is also n. UTF-16 인코딩의 경우 스토리지 크기는 여전히 n바이트 +2바이트의 두 배이지만, 보조 문자가 2바이트 쌍(서로게이트 쌍이라고도 함)을 사용하기 때문에 저장할 수 있는 문자 수는 n보다 작을 수 있습니다.For UTF-16 encoding, the storage size is still two times n bytes + 2 bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). nvarchar의 ISO 동의어는 national char varyingnational character varying로 다양합니다.The ISO synonyms for nvarchar are national char varying and national character varying.

RemarksRemarks

NCHAR(n) 및 NVARCHAR(n)에서 n이 문자 수를 정의한다고 잘못 생각하는 경우가 많습니다.A common misconception is to think that NCHAR(n) and NVARCHAR(n), the n defines the number of characters. 그러나 NCHAR(n) 및 NVARCHAR(n)에서 n바이트 쌍의 문자열 길이(0~4,000)를 정의합니다.But in NCHAR(n) and NVARCHAR(n) the n defines the string length in byte-pairs (0-4,000). n은 저장할 수 있는 문자 수를 정의하지 않습니다.n never defines numbers of characters that can be stored. CHAR(n) 및 VARCHAR(n) 정의와 비슷합니다.This is similar to the definition of CHAR(n) and VARCHAR(n).
이러한 오해는 유니코드 범위 0~65,535에 정의된 문자를 사용하는 경우 각 바이트 쌍당 하나의 문자를 저장할 수 있기 때문에 발생합니다.The misconception happens because when using characters defined in the Unicode range 0-65,535, one character can be stored per each byte-pair. 그러나 더 높은 유니코드 범위(65,536~1,114,111)에서는 한 문자가 두 개의 바이트 쌍을 사용할 수 있습니다.However, in higher Unicode ranges (65,536-1,114,111) one character may use two byte-pairs. 예를 들어 NCHAR(10)로 정의된 열에서 데이터베이스 엔진Database Engine은 하나의 바이트 쌍을 사용하는 문자(유니코드 범위 0~65,535) 10자를 저장할 수 있지만, 두 개의 바이트 쌍을 사용하는 경우(유니코드 범위 65,536~1,114,111) 10자 미만을 저장할 수 있습니다.For example, in a column defined as NCHAR(10), the 데이터베이스 엔진Database Engine can store 10 characters that use one byte-pair (Unicode range 0-65,535), but less than 10 characters when using two byte-pairs (Unicode range 65,536-1,114,111). 유니코드 스토리지 및 문자 범위에 대한 자세한 내용은 UTF-8과 UTF-16 간의 스토리지 차이점을 참조하세요.For more information about Unicode storage and character ranges, see Storage differences between UTF-8 and UTF-16.

데이터 정의나 변수 선언문에서 n을 지정하지 않으면 기본 길이 1이 사용됩니다.When n is not specified in a data definition or variable declaration statement, the default length is 1. CAST 함수에 n을 지정하지 않으면 기본 길이 30이 사용됩니다.When n is not specified with the CAST function, the default length is 30.

nchar 또는 nvarchar를 사용하는 경우 다음을 수행하는 것이 좋습니다.If you use nchar or nvarchar, we recommend to:

  • 열 데이터 항목의 크기가 일관된 경우 nchar를 사용합니다.Use nchar when the sizes of the column data entries are consistent.
  • 열 데이터 항목의 크기가 비교적 큰 차이를 보일 경우 nvarchar를 사용합니다.Use nvarchar when the sizes of the column data entries vary considerably.
  • 열 데이터 항목들의 크기가 비교적 큰 차이를 보이고 문자열 길이가 4,000바이트 쌍을 초과할 수 있는 경우 nvarchar(max) 를 사용합니다.Use nvarchar(max) when the sizes of the column data entries vary considerably, and the string length might exceed 4,000 byte-pairs.

sysname은 시스템이 제공하는 사용자 정의 데이터 형식으로 Null을 허용하지 않는다는 점을 제외하면 기능상 nvarchar(128) 와 동일합니다.sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128), except that it is not nullable. sysname은 데이터베이스 개체 이름을 참조하는 데 사용됩니다.sysname is used to reference database object names.

nchar 또는 nvarchar를 사용하는 개체에는 COLLATE 절을 사용하여 특정 데이터 정렬을 할당하지 않는 한 데이터베이스의 기본 데이터 정렬이 할당됩니다.Objects that use nchar or nvarchar are assigned the default collation of the database unless a specific collation is assigned using the COLLATE clause.

SET ANSI_PADDING은 ncharnvarchar에 대해 항상 ON입니다.SET ANSI_PADDING is always ON for nchar and nvarchar. SET ANSI_PADDING OFF는 nchar 또는 nvarchar 데이터 형식에 적용되지 않습니다.SET ANSI_PADDING OFF does not apply to the nchar or nvarchar data types.

유니코드 문자 문자열 상수 앞에 N 문자를 추가하여 SC 데이터 정렬 사용 여부에 따라 UCS-2 또는 UTF-16 입력을 알립니다.Prefix a Unicode character string constants with the letter N to signal UCS-2 or UTF-16 input, depending on whether an SC collation is used or not. N 접두사가 없으면 문자열이 특정 문자를 인식할 수 없는 데이터베이스의 기본 코드 페이지로 변환됩니다.Without the N prefix, the string is converted to the default code page of the database that may not recognize certain characters. SQL Server 2019 (15.x)SQL Server 2019 (15.x)부터 UTF-8 사용 데이터 정렬이 사용될 때 기본 코드 페이지는 유니코드 UTF-8 문자 집합을 저장할 수 있습니다.Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x), when a UTF-8 enabled collation is used, the default code page is capable of storing UNICODE UTF-8 character set.

참고

문자열 상수 앞에 문자 N을 붙일 때 변환할 상수가 nvarchar 문자열 데이터 형식(4,000)의 최대 길이를 초과하지 않는 경우 암시적 변환의 결과 UCS-2 또는 UTF-16 문자열이 됩니다.When prefixing a string constant with the letter N, the implicit conversion will result in a UCS-2 or UTF-16 string if the constant to convert does not exceed the max length for the nvarchar string data type (4,000). 그렇지 않은 경우 암시적 변환으로 nvarchar 큰 값(최대)이 됩니다.Otherwise, the implicit conversion will result in a large-value nvarchar(max).

경고

Null이 아닌 각 varchar(max) 또는 nvarchar(max) 열은 24바이트의 추가 고정 할당이 필요하며 정렬 작업 시 여기에 8,060바이트의 행 제한이 적용됩니다.Each non-null varchar(max) or nvarchar(max) column requires 24 bytes of additional fixed allocation, which counts against the 8,060-byte row limit during a sort operation. 이러한 추가 바이트로 인해 테이블에서 null이 아닌 varchar(max) 또는 nvarchar(max) 열의 수에 묵시적 제한이 적용됩니다.These additional bytes can create an implicit limit to the number of non-null varchar(max) or nvarchar(max) columns in a table. 테이블 생성 시 또는 데이터 삽입 시점에 특별한 오류(최대 행의 크기가 최대로 허용된 8,060바이트를 초과한다는 일반적인 경고 외의 메시지)가 표시되지 않습니다.No special error is provided when the table is created (beyond the usual warning that the maximum row size exceeds the allowed maximum of 8,060 bytes) or at the time of data insertion. 이렇게 큰 행 크기로 인해 사용자가 일부 정상 작업 중 예기치 않은 오류가 발생할 수 있습니다(예: 오류 512).This large row size can cause errors (such as error 512) that users may not anticipate during some normal operations. 작업의 두 가지 예제는 클러스터형 인덱스 키 업데이트 또는 전체 열 집합의 종류입니다.Two examples of operations are a clustered index key update, or sorts of the full column set.

문자 데이터 변환Converting Character Data

문자 데이터 변환에 대한 자세한 내용은 char 및 varchar (Transact-SQL)를 참조하세요.For information about converting character data, see char and varchar (Transact-SQL).

관련 항목:See also

ALTER TABLE(Transact-SQL)ALTER TABLE (Transact-SQL)
CAST 및 CONVERT(Transact-SQL)CAST and CONVERT (Transact-SQL)
COLLATE(Transact-SQL)COLLATE (Transact-SQL)
CREATE TABLE(Transact-SQL)CREATE TABLE (Transact-SQL)
데이터 형식(Transact-SQL)Data Types (Transact-SQL)
DECLARE @local_variable(Transact-SQL)DECLARE @local_variable (Transact-SQL)
LIKE(Transact-SQL)LIKE (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)SET ANSI_PADDING (Transact-SQL)
SET @local_variable(Transact-SQL) SET @local_variable (Transact-SQL)
데이터 정렬 및 유니코드 지원 Collation and Unicode Support
싱글바이트 및 멀티바이트 문자 집합Single-Byte and Multibyte Character Sets