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

SE APLICA A: síSQL Server (a partir de 2008) noAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) noAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Controla el modo en que la columna almacena valores más cortos que el tamaño definido y el modo en que almacena valores con espacios en blanco finales en datos de tipo char, varchar, binaryy 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.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- Syntax for SQL Server

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

SET ANSI_PADDING ON

NotasRemarks

Las columnas definidas con tipos de datos char, varchar, binary y varbinary tienen un tamaño definido.Columns defined with char, varchar, binary, and varbinary data types have a defined size.

Esta opción solo afecta a la definición de nuevas columnas.This setting affects only the definition of new columns. Una vez creada la columna, SQL ServerSQL Server almacena los valores de acuerdo con la opción establecida en el momento de su creación.After the column is created, SQL ServerSQL Server stores the values based on the setting when the column was created. Las columnas existentes no se ven afectadas por los cambios posteriores de esta opción.Existing columns are not affected by a later change to this setting.

Nota

ANSI_PADDING siempre se debe establecer en ON.ANSI_PADDING should always be set to ON.

En esta tabla se muestran los efectos del parámetro SET ANSI_PADDING cuando se insertan valores en columnas con los tipos de datos char, varchar, binary y 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.

ConfiguraciónSetting char(n) NOT NULL o binary(n) NOT NULLchar(n) NOT NULL or binary(n) NOT NULL char(n) NULL o binary(n) NULLchar(n) NULL or binary(n) NULL varchar(n) o varbinary(n)varchar(n) or varbinary(n)
ONON Rellena el valor original (con espacios en blanco finales en las columnas char y con ceros finales en las columnas binary) hasta completar la longitud de la columna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Sigue las mismas reglas que para char(n) o binary(n) NOT NULL cuando SET ANSI_PADDING es ON.Follows same rules as for char(n) or binary(n) NOT NULL when SET ANSI_PADDING is ON. Los espacios en blanco finales en los valores de caracteres insertados en las columnas varchar no se recortan.Trailing blanks in character values inserted into varchar columns are not trimmed. Los ceros a la derecha en los valores binarios insertados en las columnas varbinary no se recortan.Trailing zeros in binary values inserted into varbinary columns are not trimmed. Los valores no se rellenan hasta completar la longitud de la columna.Values are not padded to the length of the column.
OFFOFF Rellena el valor original (con espacios en blanco finales en las columnas char y con ceros finales en las columnas binary) hasta completar la longitud de la columna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Sigue las mismas reglas que para varchar o varbinary cuando SET ANSI_PADDING está en OFF.Follows same rules as for varchar or varbinary when SET ANSI_PADDING is OFF. Los espacios en blanco finales en los valores de carácter insertados en una columna varchar se recortan.Trailing blanks in character values inserted into a varchar column are trimmed. Los ceros a la derecha en los valores binarios insertados en una columna varbinary se recortan.Trailing zeros in binary values inserted into a varbinary column are trimmed.

Nota

Cuando se rellenan las columnas char, se incluyen espacios en blanco y en las columnas binary se incluyen ceros.When padded, char columns are padded with blanks, and binary columns are padded with zeros. Cuando se recortan las columnas char, se recortan los espacios en blanco finales; en las columnas binary se recortan los ceros finales.When trimmed, char columns have the trailing blanks trimmed, and binary columns have the trailing zeros trimmed.

ANSI_PADDING debe ser ON al crear o cambiar índices en columnas calculadas o vista indexadas.ANSI_PADDING must be ON when you are creating or changing indexes on computed columns or indexed views. Para más información sobre las configuraciones de las opciones SET necesarias con vistas indizadas e índices en columnas calculadas, vea el apartado "Consideraciones al utilizar las instrucciones SET" en Instrucciones 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).

El valor predeterminado de SET ANSI_PADDING es ON.The default for SET ANSI_PADDING is ON. El controlador ODBC de SQL ServerSQL Server Native Client y el proveedor OLE DB de SQL ServerSQL Server Native Client para SQL ServerSQL Server establecen automáticamente ANSI_PADDING en ON al conectarse.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. Esta opción se puede configurar en los orígenes de datos ODBC, en los atributos de conexión de ODBC o en las propiedades de conexión OLE DB establecidas en la aplicación 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. SET ANSI_PADDING tiene como opción predeterminada OFF en las conexiones desde aplicaciones DB-Library.The default for SET ANSI_PADDING is OFF for connections from DB-Library applications.

La opción SET ANSI_PADDING no afecta a los tipos de datos nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max) y 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. Siempre muestran el comportamiento SET ANSI_PADDING ON.They always display the SET ANSI_PADDING ON behavior. Esto significa que no se recortan los espacios y ceros a la derecha.This means trailing spaces and zeros are not trimmed.

Cuando ANSI_DEFAULTS es ON, se habilita ANSI_PADDING.When ANSI_DEFAULTS is ON, ANSI_PADDING is enabled.

El valor de ANSI_PADDING se define en tiempo de ejecución, no en tiempo de análisis.The setting of ANSI_PADDING is defined at execute or run time and not at parse time.

Para ver la configuración actual de este valor, ejecute la consulta siguiente.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;  

PermisosPermissions

Debe pertenecer al rol public .Requires membership in the public role.

EjemplosExamples

En este ejemplo se muestra cómo afecta esta opción a cada uno de los tipos de datos.The following example shows how the setting affects each of these data types.

Establezca ANSI_PADDING en ON y pruebe.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  

Ahora establezca ANSI_PADDING en OFF y pruebe.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 tambiénSee Also

Instrucciones 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)