Megosztás a következőn keresztül:


KÉSZLET ANSI_PADDING (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL analytics endpoint a Microsoft Fabric-benRaktár a Microsoft Fabric-benSQL adatbázis a Microsoft Fabric-ben

Szabályozza, hogy az oszlop hogyan tárolja az oszlop megadott méreténél rövidebb értékeket, valamint azt, hogy az oszlop hogyan tárolja azokat az értékeket , amelyekben a karakter, a varchar, a bináris és a varbináris adatok üresek.

  • SET ANSI_PADDING ON - megőrzi a sztringértékek záró üres értékeit, amikor beszúrják őket egy oszlopba. Ez ANSI-kompatibilis viselkedés.
  • SET ANSI_PADDING OFF - levágja a sztringértékek záró üres értékeit, amikor beszúrják őket egy oszlopba. Ez nem ajánlott viselkedés.

Megjegyzés:

SET ANSI_PADDING OFFés az ANSI_PADDING OFF adatbázis-beállítás elavult. Az SQL Server 2017 (14.x) és újabb verzióiban, valamint az Azure SQL Database-ben és az Azure SQL Managed Instance-ben ANSI_PADDING mindig a következőre van állítva: ON. Az elavult funkciókat nem szabad használni az új alkalmazásokban. További információ: Elavult adatbázismotor-funkciók az SQL Server 2017-ben.

Transact-SQL szintaxis konvenciók

Szemantika

Szintaxis az SQL Serverhez, kiszolgáló nélküli SQL-készlethez az Azure Synapse Analyticsben, Microsoft Fabric.

SET ANSI_PADDING { ON | OFF }

Az Azure Synapse Analytics and Analytics Platform System (PDW) szintaxisa.

SET ANSI_PADDING ON

Megjegyzések

A karakter, a varchar, a bináris és a varbináris adattípusokkal definiált oszlopok mérete meghatározott.

Ez a beállítás csak az új oszlopok definícióját érinti. Az oszlop létrehozása után az SQL Server az oszlop létrehozásakor megadott beállítás alapján tárolja az értékeket. A meglévő oszlopokat nem érinti a beállítás későbbi módosítása.

Megjegyzés:

ANSI_PADDING beállításnak mindig a következőre ONkell lennie: .

Az alábbi táblázat a beállítás hatásait mutatja be, amikor az SET ANSI_PADDING értékek karakter, varchar, bináris és varbináris adattípusú oszlopokba vannak beszúrva.

Beállítás char(n) NOT NULL vagy binary(n) NOT NULL char(n) NULL vagy bináris(n) NULL varchar(n) vagy varbinary(n)
ON Az eredeti érték kitöltése ( karakteroszlopok záró ürességeivel és bináris oszlopok záró nulláival) az oszlop hosszáig. Ugyanazokat a szabályokat követi, mint a karakter(n) vagy a bináris(n)NOT NULL eseténSET ANSI_PADDING.ON A varchar oszlopokba beszúrt karakterértékek záró üres értékei nem lesznek levágva. A varbináris oszlopokba beszúrt bináris értékek záró nullái nem lesznek levágva. Az értékek nem az oszlop hosszára lesznek kipárnázva.
OFF Az eredeti érték kitöltése ( karakteroszlopok záró ürességeivel és bináris oszlopok záró nulláival) az oszlop hosszáig. Ugyanazokat a szabályokat követi, mint a varchar vagy a varbinary , ha SET ANSI_PADDING van OFF. A varchar oszlopba beszúrt karakterértékek záró üres értékeit a rendszer levágja. A függvény levágja a varbináris oszlopba beszúrt bináris értékek záró nulláit.

Ha ki van párnázva, a karakteroszlopok üresek, a bináris oszlopok pedig nullákkal vannak kitöltve. Vágáskor a karakteroszlopok levágják a záró üreseket, a bináris oszlopok pedig a záró nullákat.

ANSI_PADDING-nak ON-nek kell lennie, amikor indexeket hoz létre vagy módosít számított oszlopokon vagy indexelt nézeteken. Az indexelt nézetekkel és a számított oszlopok indexelt indexeivel kapcsolatos kötelező SET beállítási beállításokról további információt a SET utasítások használata során megfontolandó szempontok című témakörben talál.

Az alapértelmezett érték a SET ANSI_PADDING következő ON: . Az SQL Server natív ügyfél ODBC-illesztőprogramja és az SQL Server natív ügyféloldali OLE DB-szolgáltatója az SQL Serverhez automatikusan be van állítva ANSI_PADDINGON csatlakozáskor. Ez konfigurálható ODBC-adatforrásokban, ODBC-kapcsolatattribútumokban vagy az alkalmazásban beállított OLE DB kapcsolati tulajdonságokban a csatlakozás előtt. Az alapértelmezett beállítás SET ANSI_PADDING az OFF DB-Library-alkalmazásokból származó kapcsolatokra vonatkozik.

A SET ANSI_PADDING beállítás nem befolyásolja az nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max) és nvarchar(max) adattípusokat. Mindig megjelenítik a viselkedést SET ANSI_PADDING ON . Ez azt jelenti, hogy a záró szóközök és nullák nincsenek levágva.

Ha ANSI_DEFAULTS igen ON, ANSI_PADDING engedélyezve van.

A beállítás ANSI_PADDING végrehajtáskor vagy futtatáskor van definiálva, és nem elemzési időpontban.

A beállítás aktuális beállításának megtekintéséhez futtassa a következő lekérdezést.

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

Engedélyek

A nyilvános szerepkör tagságát igényli.

Példák

Az alábbi példa bemutatja, hogy a beállítás hogyan befolyásolja ezeket az adattípusokat.

Beállítás ANSI_PADDING és ON tesztelés.

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

Most állítsa be ANSI_PADDING és OFF tesztelje.

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;