char 및 varchar(Transact-SQL)

고정 길이 또는 가변 길이의 문자 데이터 형식입니다.

  • char [ ( n ) ]
    길이가 n바이트인 고정 길이의 비유니코드 문자 데이터입니다. n은 1부터 8,000 사이의 값이어야 합니다. 저장소 크기는 n바이트입니다. char의 ISO 동의어는 character입니다.

  • varchar [ ( n | max ) ]
    가변 길이의 비유니코드 문자 데이터입니다. n은 1부터 8,000 사이의 값이 될 수 있습니다. max는 최대 저장소 크기가 2^31-1바이트임을 나타냅니다. 저장소 크기는 실제 입력된 데이터의 길이 + 2바이트입니다. 입력한 데이터의 길이는 0이 될 수 있습니다. varchar의 ISO 동의어는 char varying 또는 character varying입니다.

주의

데이터 정의나 변수 선언문에 n을 지정하지 않으면 기본 길이는 1입니다. CAST 및 CONVERT 함수를 사용할 경우 n을 지정하지 않으면 기본 길이는 30입니다.

char 또는 varchar를 사용하는 개체에 COLLATE 절을 사용하여 특정 데이터 정렬을 할당하지 않으면 데이터베이스의 기본 데이터 정렬이 할당됩니다. 데이터 정렬은 문자 데이터를 저장하는 데 사용되는 코드 페이지를 제어합니다.

여러 언어를 지원하는 사이트를 가진 경우에는 문자 변환 문제를 최소화할 수 있도록 유니코드 nchar 또는 nvarchar 데이터 형식의 사용을 고려하십시오. char 또는 varchar를 사용하는 경우에는 다음과 같이 하는 것이 좋습니다.

  • 열 데이터 항목들의 크기가 일관적일 경우 char를 사용합니다.

  • 열 데이터 항목들의 크기가 비교적 큰 차이를 보일 경우 varchar를 사용합니다.

  • 열 데이터 항목들의 크기가 비교적 큰 차이를 보이고 크기가 8,000바이트를 초과할 수 있는 경우 varchar(max)를 사용합니다.

CREATE TABLE 또는 ALTER TABLE 중 하나를 실행할 때 SET ANSI_PADDING이 OFF면 NULL로 정의된 char 열이 varchar로 처리됩니다.

데이터 정렬 코드 페이지에서 더블바이트 문자를 사용할 경우 저장소 크기는 계속 n바이트입니다. 문자열에 따라 n바이트의 저장소 크기가 n자보다 작을 수도 있습니다.

1. 변수 선언에 사용될 때 n의 기본값 표시

다음 예에서는 char 및 varchar 데이터 형식이 변수 선언에 사용될 때 n의 기본값이 1임을 보여 줍니다.

DECLARE @myVariable AS varchar
DECLARE @myNextVariable AS char
SET @myVariable = 'abc'
SET @myNextVariable = 'abc'
--The following returns 1
SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable);
GO

2. CAST 및 CONVERT에 varchar가 사용될 때 n의 기본값 표시

다음 예에서는 char 또는 varchar 데이터 형식이 CAST 및 CONVERT 함수에 사용될 때 n의 기본값이 30임을 보여 줍니다.

DECLARE @myVariable AS varchar(40)
SET @myVariable = 'This string is longer than thirty characters'
SELECT CAST(@myVariable AS varchar)
SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength';
SELECT CONVERT(char, @myVariable)
SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';