Condividi tramite


SET ANSI_PADDING (Transact-SQL)

Controlla la modalità di archiviazione nella colonna dei valori di dimensioni inferiori alle dimensioni definite per la colonna e dei valori che includono spazi vuoti finali con tipo di dati char, varchar, binary e varbinary.

Nota importanteImportante

In una versione futura di Microsoft SQL Server ANSI_PADDING sarà sempre impostato su ON e qualsiasi applicazione che la imposta in modo esplicito su OFF restituirà un errore. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

SET ANSI_PADDING { ON | OFF }

Osservazioni

Le colonne definite con i tipi di dati char, varchar, binary e varbinary hanno dimensioni definite.

Questa impostazione ha effetto solo sulla definizione di nuove colonne. Dopo la creazione della colonna, SQL Server archivia i valori basati sull'impostazione specificata in fase di creazione. Le successive modifiche dell'impostazione non hanno alcun effetto sulle colonne esistenti.

Nota

È consigliabile impostare l'opzione ANSI_PADDING sempre su 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.

Impostazione

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

char(n) NULL o binary(n) NULL

varchar(n) o varbinary(n)

ON

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.

Segue le stesse regole di char(n) o binary(n) NOT NULL quando l'opzione SET ANSI_PADDING è impostata su ON.

Gli spazi vuoti finali in valori di tipo carattere inseriti in colonne di tipo varchar non vengono eliminati. Gli zeri finali in valori binari inseriti in colonne di tipo varbinary non vengono eliminati. I valori non vengono riempiti per l'intera lunghezza della colonna.

OFF

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.

Segue le stesse regole di varchar o varbinary quando l'opzione SET ANSI_PADDING è impostata su OFF.

Gli spazi vuoti finali in valori di tipo carattere inseriti in colonne di tipo varchar vengono eliminati. Gli zeri finali in valori binari inseriti in colonne di tipo varbinary vengono eliminati.

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. 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.

È necessario che l'opzione SET ANSI_PADDING sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate. Per ulteriori informazioni sulle impostazioni dell'opzione SET necessarie per viste indicizzate e indici nelle colonne calcolate, vedere "Considerazioni sull'utilizzo delle istruzioni SET" nell'argomento SET (Transact-SQL).

L'impostazione predefinita di SET ANSI_PADDING è ON. Il driver ODBC di SQL Server Native Client e il provider OLE DB SQL Server Native Client per SQL Server impostano automaticamente l'opzione ANSI_PADDING su ON al momento della connessione. 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. L'opzione predefinita per SET ANSI_PADDING è OFF per le connessioni di applicazioni DB-Library.

L'impostazione di SET ANSI_PADDING non ha effetto sui tipi di dati nchar, nvarchar, ntext, text, image e sui tipi di dati di grandi dimensioni. Viene sempre applicata l'opzione SET ANSI_PADDING ON. Gli spazi vuoti e gli zero finali non vengono pertanto eliminati.

Quando l'opzione SET ANSI_DEFAULTS è impostata su ON, l'opzione SET ANSI_PADDING è attivata.

L'opzione SET ANSI_PADDING viene impostata in fase di esecuzione, non in fase di analisi.

Quando ANSI_PADDING è impostato su OFF, le query che includono MIN, MAX o TOP nelle colonne di tipo carattere potrebbe essere più lente che in SQL Server 2000.

Autorizzazioni

È richiesta l'appartenenza al ruolo public.

Esempi

Nell'esempio seguente viene illustrato l'impatto dell'impostazione sui diversi tipi di dati.

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