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, binary및 varbinary 데이터에 후행 공백이 있는 값을 저장하는 방법을 제어합니다.
참고 항목
SET ANSI_PADDING OFF
및 ANSI_PADDING OFF
데이터베이스 옵션은 더 이상 사용되지 않습니다. SQL Server 2017(14.x) 이상 버전에서 Azure SQL Database 및 Azure SQL Managed Instance ANSI_PADDING
는 항상 로 ON
설정됩니다. 새 애플리케이션에는 이러한 기능을 사용하면 안 됩니다. 자세한 내용은 SQL Server 2017에서 사용되지 않는 데이터베이스 엔진 기능을 참조하세요.
구문
SQL Server용 구문, Azure Synapse Analytics의 서버리스 SQL 풀, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Azure Synapse Analytics 및 Analytics Platform System(PDW)에 대한 구문입니다.
SET ANSI_PADDING ON
설명
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으로)을 채웁니다. | char(n) 또는 binary(n)NOT NULL 의 경우 ON SET 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_PADDING
를 ON
으로 설정해야 합니다. 계산 열의 인덱스 및 인덱싱된 뷰에 필요한 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_PADDING
은 OFF
DB-Library 애플리케이션의 연결에 대한 것입니다.
이 설정은 nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max) 및 nvarchar(max) 데이터 형식에 영향을 주지 않습니다.SET ANSI_PADDING
항상 동작을 표시합니다 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;