SET ANSI_PADDING(Transact-SQL)
적용 대상:Microsoft Fabric의 Microsoft Fabric
Warehouse에 있는 SQL ServerAzure SQL Managed Instance Azure Synapse
분석 분석 플랫폼 시스템(PDW)
SQL 엔드포인트
열이 정의된 열 크기보다 짧은 값을 저장하는 방법과 char, varchar, binary및 varbinary 데이터에 후행 공백이 있는 값을 저장하는 방법을 제어합니다.
Syntax
Azure Synapse Analytics, Microsoft Fabric의 SQL Server 서버리스 SQL 풀 구문
SET ANSI_PADDING { ON | OFF }
Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW) 구문
SET ANSI_PADDING ON
참고
SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.
설명
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) |
---|---|---|---|
켜기 | 열의 크기만큼 오른쪽으로 원래 값(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 문(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)