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.
Importante: |
---|
In una versione futura di SQL Server ANSI_PADDING sarà sempre ON e qualsiasi applicazione che imposta in modo esplicito l'opzione su OFF produrrà un errore. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. |
Convenzioni 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 2005 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 Native Client e il provider OLE DB SQL 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.
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
Vedere anche
Riferimento
SET (Transact-SQL)
SESSIONPROPERTY (Transact-SQL)
CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)
Altre risorse
Utilizzo di tipi di dati per valori di grandi dimensioni