Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Styr hur kolumnen lagrar värden som är kortare än kolumnens definierade storlek och hur kolumnen lagrar värden som har avslutande tomma värden i tecken-, varchar-, binär- och varbinära data.
-
SET ANSI_PADDING ON
– bevarar de avslutande blankstegen i strängvärdena när de infogas i en kolumn. Detta är ETTSI-kompatibelt beteende. -
SET ANSI_PADDING OFF
– trimmar de avslutande blankstegen i strängvärdena när de infogas i en kolumn. Detta rekommenderas inte.
Anmärkning
SET ANSI_PADDING OFF
och databasalternativet ANSI_PADDING OFF
är inaktuella. I SQL Server 2017 (14.x) och senare versioner, och Azure SQL Database och Azure SQL Managed Instance, ANSI_PADDING
är alltid inställt på ON
. Inaktuella funktioner bör inte användas i nya program. Mer information finns i Inaktuella databasmotorfunktioner i SQL Server 2017.
Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server, serverlös SQL-pool i 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
Anmärkningar
Kolumner som definieras med datatyperna char, varchar, binary och varbinary har en definierad storlek.
Den här inställningen påverkar endast definitionen av nya kolumner. När kolumnen har skapats lagrar SQL Server värdena baserat på inställningen när kolumnen skapades. Befintliga kolumner påverkas inte av en senare ändring av den här inställningen.
Anmärkning
ANSI_PADDING
ska alltid vara inställt på ON
.
I följande tabell visas effekterna av SET ANSI_PADDING
inställningen när värden infogas i kolumner med datatyperna char, varchar, binary och varbinary .
Inställning | char(n) NOT NULL eller binary(n) NOT NULL | char(n) NULL eller binary(n) NULL | varchar(n) eller varbinary(n) |
---|---|---|---|
ON |
Pad originalvärde (med avslutande blanksteg för teckenkolumner och med avslutande nollor för binära kolumner) till kolumnens längd. | Följer samma regler som för char(n) eller binary(n)NOT NULL när SET ANSI_PADDING är ON . |
Avslutande blanksteg i teckenvärden som infogas i varchar-kolumner trimmas inte. Avslutande nollor i binära värden som infogas i varbinära kolumner trimmas inte. Värden är inte vadderade till kolumnens längd. |
OFF |
Pad originalvärde (med avslutande blanksteg för teckenkolumner och med avslutande nollor för binära kolumner) till kolumnens längd. | Följer samma regler som för varchar eller varbinary när SET ANSI_PADDING är OFF . |
Avslutande blanksteg i teckenvärden som infogas i en kolumn med varchar trimmas. Avslutande nollor i binära värden som infogas i en varbinär kolumn trimmas. |
När de är vadderade är teckenkolumner vadderade med blanksteg och binära kolumner är vadderade med nollor. När de trimmas har char-kolumnerna de avslutande blankstegen trimmade och binära kolumner har de avslutande nollorna trimmade.
ANSI_PADDING
måste vara ON
när du skapar eller ändrar index för beräknade kolumner eller indexerade vyer. Mer information om obligatoriska inställningar för SET-alternativ med indexerade vyer och index på beräknade kolumner finns i Överväganden när du använder SET-uttrycken.
Standardvärdet för SET ANSI_PADDING
är ON
. SQL Server Native Client ODBC-drivrutinen och SQL Server Native Client OLE DB-providern för SQL Server anges ANSI_PADDING
automatiskt till ON
vid anslutning. Detta kan konfigureras i ODBC-datakällor, i ODBC-anslutningsattribut eller OLE DB-anslutningsegenskaper som angetts i programmet innan du ansluter. Standardvärdet för SET ANSI_PADDING
är OFF
för anslutningar från DB-Library program.
Inställningen SET ANSI_PADDING
påverkar inte datatyperna nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max) och nvarchar(max). De visar alltid beteendet SET ANSI_PADDING ON
. Det innebär att avslutande blanksteg och nollor inte trimmas.
När ANSI_DEFAULTS
är ON
är , ANSI_PADDING
aktiverad.
Inställningen ANSI_PADDING
för definieras vid körning eller körning och inte vid parsningstid.
Om du vill visa den aktuella inställningen för den här inställningen kör du följande fråga.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Behörigheter
Kräver medlemskap i offentlig roll.
Exempel
I följande exempel visas hur inställningen påverkar var och en av dessa datatyper.
Ange ANSI_PADDING
till ON
och testa.
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
Ställ nu in ANSI_PADDING
på OFF
och testa.
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;