SET ANSI_PADDING (Transact-SQL)
Gilt für: SQL Server Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW)-SQL-Analyseendpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Fabric
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.
Hinweis
SET ANSI_PADDING OFF
und die ANSI_PADDING OFF
Datenbankoption sind veraltet. In SQL Server 2017 (14.x) und höheren Versionen und Azure SQL-Datenbank und Azure SQL verwaltete Instanz ANSI_PADDING
ist immer auf ON
festgelegt. Als veraltet markierte Funktionen sollten in neuen Anwendungen nicht verwendet werden. Weitere Informationen finden Sie unter veraltete Datenbank-Engine Features in SQL Server 2017.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für SQL Server, serverloser SQL-Pool in Azure Synapse Analytics, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Syntax für Azure Synapse Analytics and Analytics Platform System (PDW).
SET ANSI_PADDING ON
Hinweise
Spalten, die mit den Datentypen char, varchar, binary und varbinary definiert sind, verfügen über eine definierte Größe.
Diese Einstellung betrifft ausschließlich die Definition neuer Spalten. Nachdem die Spalte erstellt wurde, speichert SQL Server die Werte gemäß der Einstellung, die beim Erstellen der Spalte festgelegt war. Vorhandene Spalten sind von einer späteren Änderung an dieser Einstellung nicht betroffen.
Hinweis
ANSI_PADDING
sollte immer auf ON
.
Die folgende Tabelle zeigt die Auswirkungen der SET ANSI_PADDING
Einstellung, wenn Werte in Spalten mit Datentypen char, varchar, binary und varbinary eingefügt werden.
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 Leerräumen für char-Spalten und nachfolgenden Nullen für binary-Spalten) bis zur Spaltenlänge auf. | Folgt den gleichen Regeln wie bei Char(n) oder binary(n) NOT NULL wenn SET ANSI_PADDING der Wert ist.ON |
Nachfolgende Leerzeichen in Zeichenwerten, die in Varchar-Spalten eingefügt wurden, werden nicht gekürzt. Nachfolgende Nullen in binären Werten, die in varbinäre Spalten eingefügt werden, werden nicht gekürzt. Werte werden nicht bis zur Spaltenlänge aufgefüllt. |
OFF |
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. | Folgt den gleichen Regeln wie für varchar oder varbinary, wenn SET ANSI_PADDING dies der Zeitpunkt istOFF . |
Nachfolgende Leerräume 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. |
Beim Auffüllen werden char-Spalten mit Leerräumen und binary-Spalten mit Nullen aufgefüllt. Wenn ein Abschneiden stattfindet, werden bei char-Spalten die abschließenden Leerräume abgeschnitten und bei binary-Spalten die abschließenden Nullen.
ANSI_PADDING
muss auf ON
festgelegt sein, wenn Indizes für berechnete Spalten oder indizierte Sichten erstellt oder geändert werden. Weitere Informationen zu den erforderlichen Einstellungen der SET-Option mit indizierten Sichten und Indizes für berechnete Spalten finden Sie unter Überlegungen beim Verwenden von SET-Anweisungen.
Der Standardwert für SET ANSI_PADDING
lautet ON
. Der SQL Server Native Client ODBC-Treiber und sql Server Native Client OLE DB-Anbieter für SQL Server werden beim Herstellen einer Verbindung automatisch festgelegt ANSI_PADDING
ON
. 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. Der Standardwert ist OFF
für SET ANSI_PADDING
Verbindungen von DB-Library-Anwendungen.
Die SET ANSI_PADDING
Einstellung wirkt sich nicht auf die Datentypen "nchar", "nvarchar", "ntext", "text", "image", "varbinary(max)", "varchar(max)" und "nvarchar(max)" aus. Sie zeigen immer das SET ANSI_PADDING ON
Verhalten an. Dies bedeutet, dass nachfolgende Leerzeichen und Nullen nicht gekürzt werden.
Ist ANSI_DEFAULTS
dies ON
der Zeitpunkt, ANSI_PADDING
ist aktiviert.
Die Einstellung wird ANSI_PADDING
zur Ausführung oder Laufzeit definiert und nicht zur Analysezeit.
Um die aktuelle Einstellung anzuzeigen, führen Sie die folgende Abfrage aus.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Berechtigungen
Erfordert die Mitgliedschaft in der public -Rolle.
Beispiele
Das folgende Beispiel zeigt, wie sich die Einstellung auf die einzelnen Datentypen auswirkt.
Legen Sie diese Einstellung ANSI_PADDING
fest ON
und testen Sie sie.
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
Jetzt auf ANSI_PADDING
OFF
und testen.
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;