다음을 통해 공유


SET ANSI_PADDING(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft Fabric Warehouse에 있는 SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) SQL 분석 엔드포인트

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

참고 항목

SET ANSI_PADDING OFFANSI_PADDING OFF 데이터베이스 옵션은 더 이상 사용되지 않습니다. SQL Server 2017(14.x) 이상 버전에서 Azure SQL Database 및 Azure SQL Managed Instance ANSI_PADDING 는 항상 로 ON설정됩니다. 새 애플리케이션에는 이러한 기능을 사용하면 안 됩니다. 자세한 내용은 SQL Server 2017에서 사용되지 않는 데이터베이스 엔진 기능을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

SQL Server용 구문, Azure Synapse Analytics의 서버리스 SQL 풀, Microsoft Fabric.

SET ANSI_PADDING { ON | OFF }

Azure Synapse Analytics 및 Analytics Platform System(PDW)에 대한 구문입니다.

SET ANSI_PADDING ON

참고 항목

SQL Server 2014(12.x) 이전 버전의 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)
ON 열의 크기만큼 오른쪽으로 원래 값(char 열에 대해서는 후행 공백으로, binary 열에 대해서는 후행 0으로)을 채웁니다. char(n) 또는 binary(n)NOT NULL의 경우 ONSET ANSI_PADDING동일한 규칙을 따릅니다. varchar 열에 삽입된 문자 값의 후행 공백은 잘려지지 않습니다. varbinary 열에 삽입된 이진 값의 후행 0 은 트리밍되지 않습니다. 값은 열의 크기만큼 오른쪽에 공백으로 채워집니다.
OFF 열의 크기만큼 오른쪽으로 원래 값(char 열에 대해서는 후행 공백으로, binary 열에 대해서는 후행 0으로)을 채웁니다. varchar 또는 varbinary경우 SET ANSI_PADDING OFF와 동일한 규칙을 따릅니다. varchar 열에 삽입된 문자 값의 후행 공백은 잘립니다. varbinary 열에 삽입된 이진 값 뒤에 오는 0은 잘립니다.

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

ANSI_PADDINGON 는 계산 열 또는 인덱싱된 뷰에서 인덱스를 만들거나 변경할 때여야 합니다. 계산 열의 인덱스 및 인덱싱된 뷰에 필요한 SET 옵션 설정에 대한 자세한 내용은 SET 문 사용 시 고려 사항을 참조하세요.

SET ANSI_PADDING에 대한 기본값은 ON입니다. 연결할 때 SQL Server Native Client ODBC 드라이버 및 SQL Server Native Client OLE DB Provider for SQL Server가 ON 자동으로 설정 ANSI_PADDING 됩니다. ODBC 데이터 원본과 ODBC 연결 특성 또는, SQL Server에 연결하기 전에 애플리케이션에 설정된 OLE DB 연결 속성에서 이 옵션을 구성할 수 있습니다. 기본값 SET ANSI_PADDINGOFF DB-Library 애플리케이션의 연결에 대한 것입니다.

이 설정은 nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max)nvarchar(max) 데이터 형식에 영향을 주지 않습니다.SET ANSI_PADDING 항상 동작을 표시합니다 SET ANSI_PADDING ON . 즉, 후행 공백과 0은 잘리지 않습니다.

이 경우 ANSI_DEFAULTS ONANSI_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;