SET ANSI_PADDING (Transact-SQL)SET ANSI_PADDING (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Controla como a coluna armazena valores menores que o tamanho definido da coluna e valores com espaços em branco à direita em dados do tipo char, varchar, binarye varbinary .Controls the way the column stores values shorter than the defined size of the column, and the way the column stores values that have trailing blanks in char, varchar, binary, and varbinary data.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- Syntax for SQL Server

SET ANSI_PADDING { ON | OFF }
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse

SET ANSI_PADDING ON

RemarksRemarks

Colunas definidas com os tipos de dados char, varchar, binary e varbinary têm um tamanho definido.Columns defined with char, varchar, binary, and varbinary data types have a defined size.

Essa configuração afeta somente a definição de novas colunas.This setting affects only the definition of new columns. Depois que a coluna é criada, o SQL ServerSQL Server armazena os valores com base na configuração de quando a coluna foi criada.After the column is created, SQL ServerSQL Server stores the values based on the setting when the column was created. As colunas existentes não são afetadas por uma alteração posterior a essa configuração.Existing columns are not affected by a later change to this setting.

Observação

ANSI_PADDING sempre deve ser definido como ON.ANSI_PADDING should always be set to ON.

A tabela a seguir mostra os efeitos da configuração SET ANSI_PADDING quando valores são inseridos em colunas com os tipos de dados char, varchar, binary e varbinary.The following table shows the effects of the SET ANSI_PADDING setting when values are inserted into columns with char, varchar, binary, and varbinary data types.

ConfiguraçãoSetting char(n) NOT NULL ou binary(n) NOT NULLchar(n) NOT NULL or binary(n) NOT NULL char(n) NULL ou binary(n) NULLchar(n) NULL or binary(n) NULL varchar(n) ou varbinary(n)varchar(n) or varbinary(n)
ONON Valor original de preenchimento (com espaços em branco à direita para colunas char e com zeros à direita para colunas binary) até o comprimento da coluna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Siga as mesmas regras de char( n ) ou binary( n ) NOT NULL quando SET ANSI_PADDING for ON.Follows same rules as for char(n) or binary(n) NOT NULL when SET ANSI_PADDING is ON. Os espaços em branco à direita em valores de caractere inseridos em colunas varchar não são cortados.Trailing blanks in character values inserted into varchar columns are not trimmed. Os zeros à direita em valores binários inseridos em colunas varbinary não são cortados.Trailing zeros in binary values inserted into varbinary columns are not trimmed. Os valores não são preenchidos com o tamanho da coluna.Values are not padded to the length of the column.
OFFOFF Valor original de preenchimento (com espaços em branco à direita para colunas char e com zeros à direita para colunas binary) até o comprimento da coluna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Segue as mesmas regras para varchar ou varbinary quando SET ANSI_PADDING está OFF.Follows same rules as for varchar or varbinary when SET ANSI_PADDING is OFF. Os espaços em branco à direita em valores de caractere inseridos em uma coluna varchar são cortados.Trailing blanks in character values inserted into a varchar column are trimmed. Os zeros à direita em valores binários inseridos em uma coluna varbinary são cortados.Trailing zeros in binary values inserted into a varbinary column are trimmed.

Observação

Quando preenchidas, as colunas char são preenchidas com espaços em branco e as colunas binary são preenchidas com zeros.When padded, char columns are padded with blanks, and binary columns are padded with zeros. Quando cortadas, as colunas char têm os espaços em branco à direita cortados e as colunas binary têm os zeros à direita cortados.When trimmed, char columns have the trailing blanks trimmed, and binary columns have the trailing zeros trimmed.

ANSI_PADDING deve ser ON ao criar ou alterar índices em colunas computadas ou exibições indexadas.ANSI_PADDING must be ON when you are creating or changing indexes on computed columns or indexed views. Para obter mais informações sobre as configurações da opção SET com exibições indexadas e índices em colunas computadas, consulte "Considerações sobre o uso das instruções SET" em Instruções SET (Transact-SQL).For more information about required SET option settings with indexed views and indexes on computed columns, see "Considerations When You Use the SET Statements" in SET Statements (Transact-SQL).

O padrão para SET ANSI_PADDING é ON.The default for SET ANSI_PADDING is ON. O driver do SQL ServerSQL Server Native Client ODBC e o Provedor OLE DB do SQL ServerSQL Server Native Client para SQL ServerSQL Server definem automaticamente ANSI_PADDING como ON ao conectar.The SQL ServerSQL Server Native Client ODBC driver and SQL ServerSQL Server Native Client OLE DB Provider for SQL ServerSQL Server automatically set ANSI_PADDING to ON when connecting. Isso pode ser configurado nas fontes de dados ODBC, nos atributos de conexão ODBC ou nas propriedades de conexão OLE DB definidos no aplicativo antes de conectar.This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties set in the application before connecting. O padrão para SET ANSI_PADDING é OFF para conexões de aplicativos DB-Library.The default for SET ANSI_PADDING is OFF for connections from DB-Library applications.

A configuração de SET ANSI_PADDING não afeta os tipos de dados nchar, nvarchar, ntext, text, image, varbinary(max) , varchar(max) e nvarchar(max) .The SET ANSI_PADDING setting does not affect the nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max), and nvarchar(max) data types. Eles sempre apresentam o comportamento SET ANSI_PADDING ON.They always display the SET ANSI_PADDING ON behavior. Isso significa que os espaços e zeros à direita não são cortados.This means trailing spaces and zeros are not trimmed.

Quando ANSI_DEFAULTS é ON, ANSI_PADDING está habilitado.When ANSI_DEFAULTS is ON, ANSI_PADDING is enabled.

A configuração de ANSI_PADDING é definida no momento da execução, e não no momento da análise.The setting of ANSI_PADDING is defined at execute or run time and not at parse time.

Para exibir a configuração atual dessa configuração, execute a consulta a seguir.To view the current setting for this setting, run the following query.

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

PermissõesPermissions

Requer associação à função pública .Requires membership in the public role.

ExemplosExamples

O exemplo a seguir mostra como a configuração afeta cada um desses tipos de dados.The following example shows how the setting affects each of these data types.

Defina ANSI_PADDING como ON e teste.Set ANSI_PADDING to ON and test.

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  

Agora defina ANSI_PADDING como OFF e teste.Now set ANSI_PADDING to OFF and test.

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;  

Consulte TambémSee Also

Instruções SET (Transact-SQL) SET Statements (Transact-SQL)
SESSIONPROPERTY (Transact-SQL) SESSIONPROPERTY (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)SET ANSI_DEFAULTS (Transact-SQL)