SET ANSI_PADDING (Transact-SQL)

 

THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabaseyesAzure 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 .

Topic link icon Convenciones de sintaxis de Transact-SQL

-- Syntax for SQL Server  
  
SET ANSI_PADDING { ON | OFF }  

-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
SET ANSI_PADDING ON;  

Las columnas definidas con char, varchar, binario, y varbinary tipos de datos 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.

System_CAPS_ICON_note.jpg Nota


Se recomienda que ANSI_PADDING siempre se establezca ON.

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

ConfiguraciónChar (n) NOT NULL o binary (n) NOT NULLChar (n) NULL o binary (n) NULLvarchar (n) o varbinary (n)
ONRellena el valor original (con espacios en blanco para finales char columnas y con ceros para binario columnas) a la longitud de la columna.Sigue las mismas reglas que para char (n) o binario (n) no NULL cuando SET ANSI_PADDING es ON.Espacios finales en los valores de caracteres insertados en varchar columnas no se recortan. Ceros finales en los valores binarios insertados en varbinary columnas no se recortan. Los valores no se rellenan hasta completar la longitud de la columna.
OFFRellena el valor original (con espacios en blanco para finales char columnas y con ceros para binario columnas) a la longitud de la columna.Sigue las mismas reglas que para varchar o varbinary cuando SET ANSI_PADDING es OFF.Espacios finales en los valores de carácter insertados en una varchar columna se recortan. Ceros finales en los valores binarios insertados en una varbinary columna se recortan.
System_CAPS_ICON_note.jpg Nota


Cuando se rellena, char columnas se rellenan con espacios en blanco, y binario columnas se rellenan con ceros. Cuando se recorta, char columnas tienen los espacios en blanco finales se recortan, y binario columnas se recortan los ceros.

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 opción de SET requeridas con vistas indizadas e índices en columnas calculadas, vea "Consideraciones cuando se Use las instrucciones SET" en instrucciones SET (Transact-SQL).

El valor predeterminado de SET ANSI_PADDING es ON. El SQL Server controlador ODBC Native Client y SQL Server proveedor Native Client OLE DB 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 opción SET ANSI_PADDING no afecta a la nchar, nvarchar, ntext, texto, imagen, varbinary (max), varchar (max), y nvarchar (max) tipos de datos. 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;  
  

Debe pertenecer al rol public.

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;  

Instrucciones SET (Transact-SQL)
SESSIONPROPERTY (Transact-SQL)
Crear tabla (Transact-SQL)
INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)

Adiciones de comunidad

AGREGAR
Mostrar: