SET ANSI_PADDING(Transact-SQL)

열이 정의된 열 크기보다 짧은 값을 저장하는 방법과 char, varchar, binary 및 varbinary 데이터에 후행 공백이 있는 값을 저장하는 방법을 제어합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

SET ANSI_PADDING { ON | OFF }

주의

char, varchar, binary 및 varbinary 데이터 형식으로 정의된 열은 크기가 정의되어 있습니다.

이 설정은 새 열의 정의에만 영향을 줍니다. 열이 생성된 다음에는 열을 만들 때의 설정에 따라 SQL Server에서 값을 저장합니다. 나중에 이 설정을 변경해도 기존의 열은 영향을 받지 않습니다.

[!참고]

ANSI_PADDING은 항상 ON으로 설정하는 것이 좋습니다.

다음 표에서는 char, varchar, binary 및 varbinary 데이터 형식의 열에 값을 삽입할 때 SET ANSI_PADDING 설정의 결과를 보여 줍니다.

설정

char(n) NOT NULL 또는 binary(n) NOT NULL

char(n) NULL 또는 binary(n) NULL

varchar(n) 또는 varbinary(n)

ON

열의 크기만큼 오른쪽으로 원래 값(char 열에 대해서는 후행 공백으로, binary 열에 대해서는 후행 0으로)을 채웁니다.

SET ANSI_PADDING 옵션이 ON일 때 char(n) 또는 binary(n) NOT NULL의 경우와 같은 규칙을 따릅니다.

varchar 열에 삽입된 문자 값의 후행 공백은 잘리지 않습니다. varbinary 열에 삽입된 이진 값 뒤에 오는 0은 잘리지 않습니다. 값은 열의 크기만큼 오른쪽에 공백으로 채워집니다.

OFF

열의 크기만큼 오른쪽으로 원래 값(char 열에 대해서는 후행 공백으로, binary 열에 대해서는 후행 0으로)을 채웁니다.

SET ANSI_PADDING 옵션이 OFF일 때 varchar 또는 varbinary의 경우와 같은 규칙을 따릅니다.

varchar 열에 삽입된 문자 값의 후행 공백은 잘리지 않습니다. varbinary 열에 삽입된 이진 값 뒤에 오는 0은 잘리지 않습니다.

[!참고]

채워질 때 char 열은 공백으로, binary 열은 0으로 채워집니다. 잘릴 때 char 열에서는 후행 공백이, binary 열에서는 뒤에 오는 0이 잘립니다.

계산 열이나 인덱싱된 뷰에서 인덱스를 만들거나 변경할 때는 SET ANSI_PADDING을 ON으로 설정해야 합니다. 인덱싱된 뷰 및 계산 열의 인덱스에 사용되는 필수 SET 옵션 설정 방법은 SET 문(Transact-SQL)을 참조하십시오.

SET ANSI_PADDING의 기본값은 ON입니다. SQL Server Native Client ODBC 드라이버와 SQL Server용 SQL Server Native Client OLE DB 공급자는 연결될 때 자동으로 ANSI_PADDING을 ON으로 설정합니다. ODBC 데이터 원본과 ODBC 연결 특성 또는, SQL Server에 연결하기 전에 응용 프로그램에 설정된 OLE DB 연결 속성에서 이 옵션을 구성할 수 있습니다. DB-Library 응용 프로그램에서 연결하는 경우 SET ANSI_PADDING의 기본값은 OFF입니다.

SET ANSI_PADDING 설정은 nchar, nvarchar, ntext, text, image 및 큰 값에 영향을 주지 않습니다. 이 설정은 항상 SET ANSI_PADDING ON 동작을 표시합니다. 즉, 후행 공백과 뒤에 오는 0은 잘리지 않는다는 의미입니다.

SET ANSI_DEFAULTS가 ON이면 SET ANSI_PADDING이 설정됩니다.

SET ANSI_PADDING은 실행 시간이나 런타임에 설정되며 구문 분석 시간에는 설정되지 않습니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

다음 예에서는 설정이 다음과 같은 각 데이터 형식에 영향을 미치는 방법을 보여 줍니다.

PRINT 'Testing with ANSI_PADDING ON'
SET ANSI_PADDING ON;
GO

CREATE TABLE t1 (
   charcol CHAR(16) NULL, 
   varcharcol VARCHAR(16) NULL, 
   varbinarycol VARBINARY(8)
);
GO
INSERT INTO t1 VALUES ('No blanks', 'No blanks', 0x00ee);
INSERT INTO t1 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);

SELECT 'CHAR' = '>' + charcol + '<', 'VARCHAR'='>' + varcharcol + '<',
   varbinarycol
FROM t1;
GO

PRINT 'Testing with ANSI_PADDING OFF';
SET ANSI_PADDING OFF;
GO

CREATE TABLE t2 (
   charcol CHAR(16) NULL, 
   varcharcol VARCHAR(16) NULL, 
   varbinarycol VARBINARY(8)
);
GO
INSERT INTO t2 VALUES ('No blanks', 'No blanks', 0x00ee);
INSERT INTO t2 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);

SELECT 'CHAR' = '>' + charcol + '<', 'VARCHAR'='>' + varcharcol + '<',
   varbinarycol
FROM t2;
GO

DROP TABLE t1
DROP TABLE t2

참고 항목

참조

SET 문(Transact-SQL)

SESSIONPROPERTY(Transact-SQL)

CREATE TABLE(Transact-SQL)

INSERT(Transact-SQL)

SET ANSI_DEFAULTS(Transact-SQL)