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.
Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET ANSI_PADDING { ON | OFF }
Comentarios
Las columnas definidas con los tipos de datos char, varchar, binary y varbinary tienen un tamaño definido.
Esta opción solo 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 se establezca 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 Instrucciones 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.
Para ver la configuración actual de este valor, ejecute la consulta siguiente.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Permisos
Requiere la pertenencia al rol 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;
Vea también
Referencia
Instrucciones SET (Transact-SQL)