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

GILT FÜR: jaSQL ServerneinAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Steuert das Speichern von Werten in der Spalte, wenn die Werte kürzer als die definierte Spaltengröße sind, und das Speichern von Werten mit nachfolgenden Leerzeichen in char-, varchar-, binary- und varbinary -Daten.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.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- Syntax for SQL Server

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

SET ANSI_PADDING ON

BemerkungenRemarks

Spalten, die mit den Datentypen char, varchar, binary und varbinary definiert sind, verfügen über eine definierte Größe.Columns defined with char, varchar, binary, and varbinary data types have a defined size.

Diese Einstellung betrifft ausschließlich die Definition neuer Spalten.This setting affects only the definition of new columns. Nachdem die Spalte erstellt wurde, speichert SQL ServerSQL Server die Werte gemäß der Einstellung, die beim Erstellen der Spalte festgelegt war.After the column is created, SQL ServerSQL Server stores the values based on the setting when the column was created. Bestehende Spalten sind von späteren Änderungen dieser Einstellung nicht betroffen.Existing columns are not affected by a later change to this setting.

Hinweis

ANSI_PADDING sollte immer auf ON festgelegt werden.ANSI_PADDING should always be set to ON.

Die folgende Tabelle zeigt die Auswirkungen der SET ANSI_PADDING-Einstellung, wenn Werte in Spalten vom Datentyp char, varchar, binary und varbinary eingefügt werden.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.

EinstellungSetting char(n) NOT NULL oder binary(n) NOT NULLchar(n) NOT NULL or binary(n) NOT NULL char(n) NULL oder binary(n) NULLchar(n) NULL or binary(n) NULL varchar(n) oder varbinary(n)varchar(n) or varbinary(n)
ONON Füllt den ursprünglichen Wert (mit nachfolgenden Leerräumen für char-Spalten und nachfolgenden Nullen für binary-Spalten) bis zur Spaltenlänge auf.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Folgt den gleichen Regeln wie für char( n ) oder binary( n ) NOT NULL, wenn SET ANSI_PADDING auf ON festgelegt ist.Follows same rules as for char(n) or binary(n) NOT NULL when SET ANSI_PADDING is ON. Nachfolgende Leerräume in Zeichenwerten, die in varchar-Spalten eingefügt werden, werden nicht abgeschnitten.Trailing blanks in character values inserted into varchar columns are not trimmed. Nachfolgende Nullen in Binärwerten, die in varbinary-Spalten eingefügt werden, werden nicht abgeschnitten.Trailing zeros in binary values inserted into varbinary columns are not trimmed. Werte werden nicht bis zur Spaltenlänge aufgefüllt.Values are not padded to the length of the column.
OFFOFF Füllt den ursprünglichen Wert (mit nachfolgenden Leerräumen für char-Spalten und nachfolgenden Nullen für binary-Spalten) bis zur Spaltenlänge auf.Pad original value (with trailing blanks for char columns and with trailing zeros for binary columns) to the length of the column. Folgt den gleichen Regeln wie für varchar oder varbinary, wenn SET ANSI_PADDING auf OFF festgelegt ist.Follows same rules as for varchar or varbinary when SET ANSI_PADDING is OFF. Nachfolgende Leerräume in Zeichenwerten, die in eine varchar-Spalte eingefügt werden, werden abgeschnitten.Trailing blanks in character values inserted into a varchar column are trimmed. Nachfolgende Nullen in Binärwerten, die in eine varbinary-Spalte eingefügt werden, werden abgeschnitten.Trailing zeros in binary values inserted into a varbinary column are trimmed.

Hinweis

Beim Auffüllen werden char-Spalten mit Leerräumen und binary-Spalten mit Nullen aufgefüllt.When padded, char columns are padded with blanks, and binary columns are padded with zeros. Wenn ein Abschneiden stattfindet, werden bei char-Spalten die abschließenden Leerräume abgeschnitten und bei binary-Spalten die abschließenden Nullen.When trimmed, char columns have the trailing blanks trimmed, and binary columns have the trailing zeros trimmed.

Für ANSI_PADDING muss beim Erstellen oder Ändern von Indizes für berechnete Spalten oder indizierte Sichten die Einstellung ON festgelegt werden.ANSI_PADDING must be ON when you are creating or changing indexes on computed columns or indexed views. Weitere Informationen zu den erforderlichen Einstellungen der SET-Option mit indizierten Sichten und Indizes für berechnete Spalten finden Sie in den Überlegungen zum Verwenden der SET-Anweisungen unter SET-Anweisungen (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).

Die Standardeinstellung für SET ANSI_PADDING ist ON.The default for SET ANSI_PADDING is ON. Der ODBC-Treiber von SQL ServerSQL Server Native Client und der OLE DB-Anbieter von SQL ServerSQL Server Native Client für SQL ServerSQL Server legen für ANSI_PADDING beim Herstellen einer Verbindung automatisch ON fest.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. Diese Einstellung kann in ODBC-Datenquellen, in ODBC-Verbindungsattributen oder in OLE DB-Verbindungseigenschaften konfiguriert werden, die in der Anwendung festgelegt werden, bevor die Verbindung hergestellt wird.This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties set in the application before connecting. Die Standardeinstellung für SET ANSI_PADDING für Verbindungen von DB-Library-Anwendungen ist OFF.The default for SET ANSI_PADDING is OFF for connections from DB-Library applications.

Die Einstellung SET ANSI_PADDING hat keine Auswirkungen auf die Datentypen nchar, nvarchar, ntext, text, image, varbinary(max) , varchar(max) und 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. Diese zeigen immer das Verhalten von SET ANSI_PADDING ON.They always display the SET ANSI_PADDING ON behavior. Das heißt, dass nachfolgende Leerzeichen und Nullen nicht abgeschnitten werden.This means trailing spaces and zeros are not trimmed.

Ist ANSI_DEFAULTS auf ON festgelegt, so ist ANSI_PADDING aktiviert.When ANSI_DEFAULTS is ON, ANSI_PADDING is enabled.

Die Einstellung von ANSI_PADDING wird zur Ausführungszeit und nicht zur Analysezeit definiert.The setting of ANSI_PADDING is defined at execute or run time and not at parse time.

Um die aktuelle Einstellung anzuzeigen, führen Sie die folgende Abfrage aus.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;  

BerechtigungenPermissions

Erfordert die Mitgliedschaft in der public -Rolle.Requires membership in the public role.

BeispieleExamples

Das folgende Beispiel zeigt, wie sich die Einstellung auf die einzelnen Datentypen auswirkt.The following example shows how the setting affects each of these data types.

Legen Sie ANSI_PADDING auf ON fest, und führen Sie einen Test durch.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  

Legen Sie nun ANSI_PADDING auf OFF fest, und führen Sie noch einmal einen Test durch.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;  

Weitere InformationenSee Also

SET-Anweisungen (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)