SET ANSI_PADDING(Transact-SQL)
열이 정의된 열 크기보다 짧은 값을 저장하는 방법과 char, varchar, binary 및 varbinary 데이터에 후행 공백이 있는 값을 저장하는 방법을 제어합니다.
구문
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