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

SI APPLICA A: sìSQL Server noDatabase SQL di Azure sìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Controlla il modo in cui la colonna archivia i valori di dimensioni inferiori a quelle definite della colonna e i valori contenenti spazi vuoti finali nei dati char, varchar, binarye 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.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

-- Syntax for SQL Server

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

SET ANSI_PADDING ON

RemarksRemarks

Le colonne definite con i tipi di dati char, varchar, binary e varbinary hanno dimensioni definite.Columns defined with char, varchar, binary, and varbinary data types have a defined size.

Questa impostazione influisce solo sulla definizione di nuove colonne.This setting affects only the definition of new columns. Dopo la creazione della colonna, SQL ServerSQL Server archivia i valori in base all'impostazione specificata in fase di creazione.After the column is created, SQL ServerSQL Server stores the values based on the setting when the column was created. Le successive modifiche dell'impostazione non influiscono sulle colonne esistenti.Existing columns are not affected by a later change to this setting.

Nota

ANSI_PADDING deve essere sempre impostata su ON.ANSI_PADDING should always be set to ON.

Nella tabella seguente vengono illustrati gli effetti dell'impostazione dell'opzione SET ANSI_PADDING quando i valori vengono inseriti in colonne con dati di tipo char, varchar, binary e 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.

ImpostazioneSetting 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 Completa il valore originale con spazi vuoti finali in colonne di tipo char e con zeri finali in colonne di tipo binary in modo da riempire l'intera lunghezza della colonna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Segue le stesse regole di char( n ) o binary( n ) NOT NULL quando l'opzione SET ANSI_PADDING è impostata su ON.Follows same rules as for char(n) or binary(n) NOT NULL when SET ANSI_PADDING is ON. Gli spazi vuoti finali nei valori di tipo carattere inseriti in colonne di tipo varchar non vengono eliminati.Trailing blanks in character values inserted into varchar columns are not trimmed. Gli zeri finali in valori binari inseriti in colonne di tipo varbinary non vengono eliminati.Trailing zeros in binary values inserted into varbinary columns are not trimmed. I valori non vengono riempiti con caratteri nulli per l'intera lunghezza della colonna.Values are not padded to the length of the column.
OFFOFF Completa il valore originale con spazi vuoti finali in colonne di tipo char e con zeri finali in colonne di tipo binary in modo da riempire l'intera lunghezza della colonna.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Segue le stesse regole di varchar o varbinary quando l'opzione SET ANSI_PADDING è impostata su OFF.Follows same rules as for varchar or varbinary when SET ANSI_PADDING is OFF. Gli spazi vuoti finali in valori di tipo carattere inseriti in colonne di tipo varchar vengono eliminati.Trailing blanks in character values inserted into a varchar column are trimmed. Gli zeri finali in valori binari inseriti in colonne di tipo varbinary vengono eliminati.Trailing zeros in binary values inserted into a varbinary column are trimmed.

Nota

Durante l'operazione di riempimento le colonne di tipo char vengono riempite con spazi, mentre le colonne di tipo binary vengono riempite con zeri.When padded, char columns are padded with blanks, and binary columns are padded with zeros. Durante l'eliminazione, dalle colonne di tipo char vengono eliminati gli spazi vuoti finali, mentre dalle colonne di tipo binary vengono eliminati gli zeri finali.When trimmed, char columns have the trailing blanks trimmed, and binary columns have the trailing zeros trimmed.

È necessario che l'opzione ANSI_PADDING sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.ANSI_PADDING must be ON when you are creating or changing indexes on computed columns or indexed views. Per altre informazioni sulle impostazioni dell'opzione SET necessarie per viste indicizzate e indici nelle colonne calcolate, vedere "Considerazioni sull'uso delle istruzioni SET" nell'argomento Istruzioni 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).

L'impostazione predefinita di SET ANSI_PADDING è ON.The default for SET ANSI_PADDING is ON. Il driver ODBC di SQL ServerSQL Server Native Client e il provider OLE DB di SQL ServerSQL Server Native Client per SQL ServerSQL Server impostano automaticamente l'opzione ANSI_PADDING su ON al momento della connessione.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. Questa può essere configurata nelle origini dati ODBC, negli attributi di connessione ODBC o nelle proprietà di connessione OLE DB impostate nell'applicazione prima della connessione.This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties set in the application before connecting. L'opzione predefinita per SET ANSI_PADDING è OFF per le connessioni di applicazioni DB-Library.The default for SET ANSI_PADDING is OFF for connections from DB-Library applications.

L'impostazione SET ANSI_PADDING non ha effetto sui tipi di dati nchar, nvarchar, ntext, text, image, varbinary(max) , varchar(max) e 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. Viene sempre applicata l'opzione SET ANSI_PADDING ON.They always display the SET ANSI_PADDING ON behavior. Gli spazi vuoti e gli zero finali non vengono pertanto eliminati.This means trailing spaces and zeros are not trimmed.

Quando l'opzione ANSI_DEFAULTS è impostata su ON, l'opzione ANSI_PADDING è abilitata.When ANSI_DEFAULTS is ON, ANSI_PADDING is enabled.

L'impostazione di ANSI_PADDING viene definita in fase di esecuzione, non in fase di analisi.The setting of ANSI_PADDING is defined at execute or run time and not at parse time.

Per visualizzare l'impostazione corrente per questa impostazione, eseguire la query riportata di seguito.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;  

AutorizzazioniPermissions

È richiesta l'appartenenza al ruolo public .Requires membership in the public role.

EsempiExamples

Nell'esempio seguente viene illustrato l'impatto dell'impostazione sui diversi tipi di dati.The following example shows how the setting affects each of these data types.

Impostare ANSI_PADDING su ON e testare.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  

Ora impostare ANSI_PADDING su OFF e testare.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;  

Vedere ancheSee Also

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