SET ANSI_PADDING(Transact-SQL)

적용 대상: 예SQL Server(지원되는 모든 버전) 예Azure SQL Managed Instance 예Azure Synapse Analytics 예병렬 데이터 웨어하우스

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

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

구문

SQL Server 및 Azure Synapse Analytics의 서버리스 SQL 풀 구문

SET ANSI_PADDING { ON | OFF }

Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW) 구문

SET ANSI_PADDING ON

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

설명

char, varchar, binaryvarbinary 데이터 형식으로 정의된 열에는 정의된 크기가 있습니다.

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

참고

ANSI_PADDING은 항상 ON으로 설정해야 합니다.

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

설정 char(n) NOT NULL 또는 binary(n) NOT NULL char(n) NULL 또는 binary(n) NULL varchar(n) 또는 varbinary(n)
켜기 열의 크기만큼 오른쪽으로 원래 값(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이 잘립니다.

계산 열이나 인덱싱된 뷰에서 인덱스를 만들거나 변경할 때는 ANSI_PADDING을 ON으로 설정해야 합니다. 인덱싱된 뷰 및 계산 열의 인덱스에 사용되는 필수 SET 옵션 설정에 대한 자세한 내용은 SET Statements (Transact-SQL)에서 "SET 문 사용 시 고려 사항"을 참조하세요.

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, varbinary(max), varchar(max)nvarchar(max) 데이터 형식에는 영향을 주지 않습니다. 이 설정은 항상 SET ANSI_PADDING ON 동작을 표시합니다. 즉, 후행 공백과 뒤에 오는 0은 잘리지 않는다는 의미입니다.

ANSI_DEFAULTS가 ON이면 ANSI_PADDING이 활성화됩니다.

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

이 설정에 대한 현재 설정을 보려면 다음 쿼리를 실행합니다.

DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';  
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';  
SELECT @ANSI_PADDING AS ANSI_PADDING;  

사용 권한

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

예제

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

ANSI_PADDING을 ON으로 설정하고 테스트합니다.

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  

이제 ANSI_PADDING을 OFF로 설정하고 테스트합니다.

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)