SET ANSI_PADDING (Transact-SQL)

Steuert das Speichern von Werten in der Spalte, wenn die Werte kürzer als die definierte Spaltengröße sind, sowie das Speichern von Werten mit nachfolgenden Leerzeichen in Daten vom Typ char, varchar, binary und varbinary.

ms187403.note(de-de,SQL.90).gifWichtig:
In einer zukünftigen Version von SQL Server wird ANSI_PADDING immer auf ON festgelegt sein, und bei allen Anwendungen, in denen diese Option auf OFF festgelegt ist, tritt ein Fehler auf. Vermeiden Sie die Verwendung dieses Features in neuen Entwicklungsprojekten, und planen Sie die Änderung von Anwendungen, in denen es zurzeit verwendet wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

SET ANSI_PADDING { ON | OFF }

Hinweise

Spalten, die mit den Datentypen char, varchar, binary oder varbinary definiert wurden, haben eine definierte Größe.

Diese Einstellung betrifft ausschließlich die Definition neuer Spalten. Nachdem die Spalte erstellt wurde, speichert SQL Server 2005 die Werte gemäß der Einstellung, die beim Erstellen der Spalte festgelegt war. Bestehende Spalten sind von späteren Änderungen dieser Einstellung nicht betroffen.

ms187403.note(de-de,SQL.90).gifHinweis:
Es wird empfohlen, für ANSI_PADDING stets den Wert ON festzulegen.

Die folgende Tabelle zeigt die Wirkung der Einstellungen für SET ANSI_PADDING beim Einfügen von Werten in Spalten vom Datentyp char, varchar, binary oder varbinary.

Einstellung char(n) NOT NULL oder binary(n) NOT NULL char(n) NULL oder binary(n) NULL varchar(n) oder varbinary(n)

ON

Füllt den ursprünglichen Wert (mit nachfolgenden Leerzeichen für char-Spalten und nachfolgenden Nullen für binary-Spalten) bis zur Spaltenlänge auf.

Folgt den gleichen Regeln wie char(n) oder binary(n) NOT NULL, wenn für SET ANSI_PADDING die Einstellung ON festgelegt ist.

Nachfolgende Leerzeichen in Zeichenwerten, die in varchar-Spalten eingefügt werden, werden nicht abgeschnitten. Nachfolgende Nullen in Binärwerten, die in varbinary-Spalten eingefügt werden, werden nicht abgeschnitten. Werte werden nicht bis zur Spaltenlänge aufgefüllt.

OFF

Füllt den ursprünglichen Wert (mit nachfolgenden Leerzeichen für char-Spalten und nachfolgenden Nullen für binary-Spalten) bis zur Spaltenlänge auf.

Folgt den gleichen Regeln wie varchar oder varbinary, wenn für SET ANSI_PADDING die Einstellung OFF festgelegt ist.

Nachfolgende Leerzeichen in Zeichenwerten, die in eine varchar-Spalte eingefügt werden, werden abgeschnitten. Nachfolgende Nullen in Binärwerten, die in eine varbinary-Spalte eingefügt werden, werden abgeschnitten.

ms187403.note(de-de,SQL.90).gifHinweis:
Beim Auffüllen werden char-Spalten mit Leerzeichen und binary-Spalten mit Nullen aufgefüllt. Wenn ein Abschneiden stattfindet, werden bei char-Spalten die abschließenden Leerzeichen abgeschnitten und bei binary-Spalten die abschließenden Nullen.

Für SET ANSI_PADDING muss beim Erstellen oder Ändern von Indizes für berechnete Spalten oder indizierte Sichten die Einstellung ON festgelegt sein. 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 (Transact-SQL).

Die Standardeinstellung für SET ANSI_PADDING ist ON. Der ODBC-Treiber von SQL Native Client und der OLE DB-Anbieter von SQL Native Client für SQL Server legen für ANSI_PADDING beim Herstellen einer Verbindung automatisch ON fest. 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. Die Standardeinstellung für SET ANSI_PADDING für Verbindungen von DB-Library-Anwendungen ist OFF.

Die Einstellung SET ANSI_PADDING wirkt sich nicht auf die Datentypen nchar, nvarchar, ntext, text, image und ebensowenig auf Datentypen für große Werte aus. Diese zeigen immer das Verhalten von SET ANSI_PADDING ON. Das heißt, dass nachfolgende Leerzeichen und Nullen nicht abgeschnitten werden.

Ist SET ANSI_DEFAULTS auf ON festgelegt, so ist SET ANSI_PADDING aktiviert.

Die Einstellung von SET ANSI_PADDING wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.

Berechtigungen

Erfordert die Mitgliedschaft in der public-Rolle.

Beispiele

Das folgende Beispiel zeigt, wie sich die Einstellung auf die einzelnen Datentypen auswirkt.

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

Siehe auch

Verweis

SET (Transact-SQL)
SESSIONPROPERTY (Transact-SQL)
CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)

Andere Ressourcen

Verwenden von Datentypen mit umfangreichen Werten

Hilfe und Informationen

Informationsquellen für SQL Server 2005