SET ANSI_PADDING (Transact-SQL)

Controla el modo en que la columna almacena valores más cortos que el tamaño que tiene definido y cómo almacena valores con espacios en blanco a la derecha en datos de tipo char, varchar, binary y varbinary.

Nota importanteImportante

En una versión futura de MicrosoftSQL Server ANSI_PADDING siempre estará establecida en ON y cualquier aplicación que establezca de forma explícita la opción en OFF generará un error. Evite usar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

SET ANSI_PADDING { ON | OFF }

Notas

Las columnas definidas con los tipos de datos char, varchar, binary y varbinary tienen un tamaño definido.

Esta opción sólo afecta a la definición de nuevas columnas. Una vez creada la columna, SQL Server almacena los valores de acuerdo con la opción establecida en el momento de su creación. Las columnas existentes no se ven afectadas por los cambios posteriores de esta opción.

[!NOTA]

Se recomienda que ANSI_PADDING siempre sea ON.

En esta tabla se muestran los efectos de la opción SET ANSI_PADDING cuando se insertan valores en columnas con los tipos de datos char, varchar, binary y varbinary.

Configuración

char(n) NOT NULL o binary(n) NOT NULL

char(n) NULL o binary(n) NULL

varchar(n) o varbinary(n)

ON

Rellena el valor original (con espacios en blanco a la derecha para las columnas char y con ceros a la derecha para las columnas binary) hasta completar la longitud de la columna.

Sigue las mismas reglas que para char(n) o binary(n) NOT NULL cuando SET ANSI_PADDING es ON.

Los espacios en blanco a la derecha en los valores de caracteres insertados en las columnas varchar no se recortan. Los ceros a la derecha en los valores binarios insertados en las columnas varbinary no se recortan. Los valores no se rellenan hasta completar la longitud de la columna.

OFF

Rellena el valor original (con espacios en blanco a la derecha para las columnas char y con ceros a la derecha para las columnas binary) hasta completar la longitud de la columna.

Sigue las mismas reglas que para varchar o varbinary cuando SET ANSI_PADDING es OFF.

Los espacios en blanco a la derecha en los valores de carácter insertados en una columna varchar se recortan. Los ceros a la derecha en los valores binarios insertados en una columna varbinary se recortan.

[!NOTA]

Cuando se rellenan las columnas char, se incluyen espacios en blanco y en las columnas binary se incluyen ceros. Cuando se recortan las columnas char, se recortan los espacios en blanco a la derecha; en las columnas binary se recortan los ceros a la derecha.

SET ANSI_PADDING también debe ser ON al crear o cambiar índices en columnas calculadas o vistas indizadas. Para obtener más información acerca de las configuraciones de las opciones SET requeridas con vistas indizadas e índices en columnas calculadas, vea el apartado relativo a las consideraciones al utilizar las instrucciones SET en SET (Transact-SQL).

El valor predeterminado de SET ANSI_PADDING es ON. El controlador ODBC de SQL Server Native Client y el proveedor OLE DB de SQL Server Native Client para SQL Server establecen automáticamente ANSI_PADDING en ON al conectarse. 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. SET ANSI_PADDING tiene como opción predeterminada OFF en las conexiones desde aplicaciones DB-Library.

La configuración de SET ANSI_PADDING no afecta a nchar, nvarchar, ntext, text, image ni a los valores grandes. Siempre muestran el comportamiento SET ANSI_PADDING ON. Esto significa que no se recortan los espacios y ceros a la derecha.

Cuando SET ANSI_DEFAULTS es ON, se habilita SET ANSI_PADDING.

La configuración de SET ANSI_PADDING se establece en tiempo de ejecución, no en tiempo de análisis.

Cuando ANSI_PADDING se establece en OFF, las consultas que implican la presencia de MIN, MAX o TOP en columnas de caracteres podrían ser más lentas que en SQL Server 2000.

Permisos

Debe pertenecer a la función public.

Ejemplos

En este ejemplo se muestra cómo afecta esta opción a cada uno de los tipos de datos.

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

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