Delen via


SET-ANSI_PADDING (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft Fabric

Bepaalt de manier waarop de kolom waarden opslaat die korter zijn dan de gedefinieerde grootte van de kolom, en de manier waarop de kolom waarden opslaat die lege waarden bevatten in teken-, varchar-, binaire en varbinaire gegevens.

  • SET ANSI_PADDING ON - behoudt de afsluitende lege waarden in de tekenreekswaarden wanneer ze in een kolom worden ingevoegd. Dit is ansi-compatibel gedrag.
  • SET ANSI_PADDING OFF - trimt de afsluitende lege waarden in de tekenreekswaarden wanneer ze in een kolom worden ingevoegd. Dit wordt niet aanbevolen.

Opmerking

SET ANSI_PADDING OFFen de ANSI_PADDING OFF databaseoptie zijn afgeschaft. In SQL Server 2017 (14.x) en latere versies, en Azure SQL Database en Azure SQL Managed Instance, ANSI_PADDING is altijd ingesteld op ON. Afgeschafte functies mogen niet worden gebruikt in nieuwe toepassingen. Zie Afgeschafte database-enginefuncties in SQL Server 2017 voor meer informatie.

Transact-SQL syntaxis-conventies

Syntaxis

Syntaxis voor SQL Server, serverloze SQL-pool in Azure Synapse Analytics, Microsoft Fabric.

SET ANSI_PADDING { ON | OFF }

Syntaxis voor Azure Synapse Analytics en Analytics Platform System (PDW).

SET ANSI_PADDING ON

Opmerkingen

Kolommen die zijn gedefinieerd met teken-, varchar-, binaire en varbinaire gegevenstypen hebben een gedefinieerde grootte.

Deze instelling is alleen van invloed op de definitie van nieuwe kolommen. Nadat de kolom is gemaakt, worden de waarden opgeslagen op basis van de instelling toen de kolom werd gemaakt. Bestaande kolommen worden niet beïnvloed door een latere wijziging in deze instelling.

Opmerking

ANSI_PADDING moet altijd worden ingesteld op ON.

In de volgende tabel ziet u de effecten van de SET ANSI_PADDING instelling wanneer waarden worden ingevoegd in kolommen met teken-, varchar-, binaire en varbinaire gegevenstypen.

Configuratie char(n) NOT NULL of binary(n) NOT NULL char(n) NULL of binary(n) NULL varchar(n) of varbinary(n)
ON Gebruik de oorspronkelijke waarde (met volg lege waarden voor tekenkolommen en met volgnullen voor binaire kolommen) tot de lengte van de kolom. Volgt dezelfde regels als voor char(n) of binary(n)NOT NULL wanneer SET ANSI_PADDING dit is ON. Afsluitende lege waarden in tekenwaarden die zijn ingevoegd in varchar-kolommen , worden niet ingekort. Volgnullen in binaire waarden die zijn ingevoegd in varbinaire kolommen worden niet ingekort. Waarden worden niet opgevuld tot de lengte van de kolom.
OFF Gebruik de oorspronkelijke waarde (met volg lege waarden voor tekenkolommen en met volgnullen voor binaire kolommen) tot de lengte van de kolom. Volgt dezelfde regels als voor varchar of varbinary wanneer SET ANSI_PADDING .OFF Afsluitende lege waarden in tekenwaarden die in een varchar-kolom zijn ingevoegd, worden ingekort. Volgnullen in binaire waarden die in een varbinaire kolom zijn ingevoegd, worden ingekort.

Bij het kussen worden tekenkolommen opgevuld met lege waarden en binaire kolommen opgevuld met nullen. Bij bijgesneden tekenkolommen worden de afsluitende lege waarden ingekort en binaire kolommen worden de volgnullen bijgesneden.

ANSI_PADDING moet worden ON wanneer u indexen maakt of wijzigt in berekende kolommen of geïndexeerde weergaven. Zie Overwegingen wanneer u de SET-instructies gebruikt voor meer informatie over vereiste instellingen voor set-opties met geïndexeerde weergaven en indexen voor berekende kolommen.

De standaardwaarde SET ANSI_PADDING is ON. Het ODBC-stuurprogramma van de SYSTEEMeigen SQL Server-client en de OLE DB-provider van DE SQL Server-client voor SQL Server worden automatisch ingesteld ANSI_PADDINGON wanneer er verbinding wordt gemaakt. Dit kan worden geconfigureerd in ODBC-gegevensbronnen, in ODBC-verbindingskenmerken of OLE DB-verbindingseigenschappen die zijn ingesteld in de toepassing voordat u verbinding maakt. De standaardinstelling SET ANSI_PADDING is OFF voor verbindingen van DB-Library toepassingen.

De SET ANSI_PADDING instelling heeft geen invloed op de gegevenstypen nchar, nvarchar, ntext, tekst, afbeelding, varbinary(max), varchar(max), en nvarchar(max). Ze geven altijd het SET ANSI_PADDING ON gedrag weer. Dit betekent dat volgspaties en nullen niet worden ingekort.

Wanneer ANSI_DEFAULTS is , ON is ANSI_PADDINGingeschakeld.

De instelling ANSI_PADDING wordt gedefinieerd tijdens het uitvoeren of uitvoeren en niet op parseringstijd.

Voer de volgende query uit om de huidige instelling voor deze instelling weer te geven.

DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;

Machtigingen

Vereist lidmaatschap van de openbare rol.

Voorbeelden

In het volgende voorbeeld ziet u hoe de instelling van invloed is op elk van deze gegevenstypen.

Ingesteld ANSI_PADDING op ON en 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

Nu ingesteld ANSI_PADDING op OFF en 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;