SET ANSI_PADDING (Transact-SQL)
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric
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 .
Observação
SET ANSI_PADDING OFF
e a ANSI_PADDING OFF
opção de banco de dados foram preteridos. No SQL Server 2017 (14.x) e versões posteriores, e no Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure, ANSI_PADDING
é sempre definido como ON
. Recursos preteridos não devem ser usados em aplicativos novos. Para obter mais informações, consulte Recursos preteridos do Mecanismo de Banco de Dados no SQL Server 2017.
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe para SQL Server, pool de SQL sem servidor no Azure Synapse Analytics, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Sintaxe para Azure Synapse Analytics e PDW (Analytics Platform System).
SET ANSI_PADDING ON
Comentários
Colunas definidas com os tipos de dados char, varchar, binary e varbinary têm um tamanho definido.
Essa configuração afeta somente a definição de novas colunas. Depois que a coluna é criada, o SQL Server armazena os valores com base na configuração de quando a coluna foi criada. As colunas existentes não são afetadas por uma alteração posterior nessa configuração.
Observação
ANSI_PADDING
deve sempre ser definido como ON
.
A tabela a seguir mostra os efeitos da configuração quando os SET ANSI_PADDING
valores são inseridos em colunas com os tipos de dados char, varchar, binary e varbinary.
Configuração | char(n) NOT NULL ou binary(n) NOT NULL | char(n) NULL ou binary(n) NULL | varchar(n) ou varbinary(n) |
---|---|---|---|
ON |
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. | Segue as mesmas regras de char(n) ou binary(n) NOT NULL quando SET ANSI_PADDING é .ON |
Os espaços em branco à direita em valores de caractere inseridos em colunas varchar não são cortados. Os zeros à direita em valores binários inseridos em colunas varbinary não são cortados. Os valores não são preenchidos com o tamanho da coluna. |
OFF |
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. | Segue as mesmas regras de varchar ou varbinary quando SET ANSI_PADDING é OFF . |
Os espaços em branco à direita em valores de caractere inseridos em uma coluna varchar são cortados. Os zeros à direita em valores binários inseridos em uma coluna varbinary são cortados. |
Quando preenchidas, as colunas char são preenchidas com espaços em branco e as colunas binary são preenchidas com 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.
ANSI_PADDING
precisará ser ON
ao criar ou alterar índices em colunas computadas ou exibições indexadas. Para obter mais informações sobre as configurações da opção SET necessárias com exibições indexadas e índices em colunas computadas, confira Considerações sobre o uso das instruções SET.
O padrão para SET ANSI_PADDING
é ON
. O driver ODBC do SQL Server Native Client e o Provedor OLE DB do SQL Server Native Client para SQL Server são definidos ANSI_PADDING
automaticamente ao ON
se conectar. 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. O padrão for SET ANSI_PADDING
é OFF
para conexões de aplicativos de biblioteca de banco de dados.
A SET ANSI_PADDING
configuração não afeta os tipos de dados nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max) e nvarchar(max ). Eles sempre exibem o SET ANSI_PADDING ON
comportamento. Isso significa que os espaços à direita e zeros não são cortados.
Quando ANSI_DEFAULTS
é ON
, ANSI_PADDING
está habilitado.
A configuração de é definida em tempo de execução ou execução e não em tempo de ANSI_PADDING
análise.
Para exibir a configuração atual dessa configuração, execute a consulta a seguir.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Permissões
Requer associação à função pública .
Exemplos
O exemplo a seguir mostra como a configuração afeta cada um desses tipos de dados.
Defina ANSI_PADDING
como ON
e 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
e OFF
teste.
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;