Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformový systém (PDW)
SQL analytics endpoint v Microsoft Fabric
Sklad v Microsoft Fabric
SQL databáze v Microsoft Fabric
Určuje způsob, jakým sloupec ukládá hodnoty kratší než definovaná velikost sloupce, a způsob, jakým sloupec ukládá hodnoty, které obsahují koncové hodnoty v datech typu char, varchar, binary a varbinary .
-
SET ANSI_PADDING ON- zachová koncové prázdné hodnoty v řetězcových hodnotách při jejich vložení do sloupce. Toto chování je kompatibilní se standardem ANSI. -
SET ANSI_PADDING OFF- oříznou koncové prázdné hodnoty v řetězcových hodnotách při jejich vložení do sloupce. Toto chování se nedoporučuje.
Poznámka:
SET ANSI_PADDING OFFa ANSI_PADDING OFF možnost databáze je zastaralá. V SQL Serveru 2017 (14.x) a novějších verzích je vždy nastavená služba ANSI_PADDINGAzure SQL Database a Azure SQL Managed Instance ON . Zastaralé funkce by se neměly používat v nových aplikacích. Další informace najdete v tématu Zastaralé funkce databázového stroje v SQL Serveru 2017.
Syntaxe
Syntaxe pro SQL Server, bezserverový fond SQL ve službě Azure Synapse Analytics, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Syntaxe pro Azure Synapse Analytics a Platform Platform System (PDW).
SET ANSI_PADDING ON
Poznámky
Sloupce definované pomocí datových typů char, varchar, binary a varbinary mají definovanou velikost.
Toto nastavení má vliv pouze na definici nových sloupců. Po vytvoření sloupce uloží SQL Server hodnoty na základě nastavení při vytvoření sloupce. Pozdější změna tohoto nastavení neovlivní existující sloupce.
Poznámka:
ANSI_PADDING by měla být vždy nastavena na ONhodnotu .
Následující tabulka ukazuje účinky SET ANSI_PADDING nastavení při vkládání hodnot do sloupců s datovými typy char, varchar, binary a varbinary .
| Nastavení | char(n) NOT NULL nebo binary(n) NOT NULL | char(n) NULL nebo binary(n) NULL | varchar(n) nebo varbinary(n) |
|---|---|---|---|
ON |
Původní hodnotu (s koncovými mezerami pro znakové sloupce a koncovými nulami pro binární sloupce) na délku sloupce. | Dodržuje stejná pravidla jako pro znak(n) nebo binary(n),NOT NULL pokud SET ANSI_PADDING je ON. |
Koncové prázdné hodnoty v hodnotách znaků vložené do sloupců varchar nejsou oříznuté. Koncové nuly v binárních hodnotách vložených do varbinárních sloupců nejsou oříznuté. Hodnoty nejsou vycpané na délku sloupce. |
OFF |
Původní hodnotu (s koncovými mezerami pro znakové sloupce a koncovými nulami pro binární sloupce) na délku sloupce. | Řídí se stejnými pravidly jako pro varchar nebo varbinary , pokud SET ANSI_PADDING je OFF. |
Koncové prázdné hodnoty v hodnotách znaků vložené do sloupce varchar jsou oříznuté. Koncové nuly v binárních hodnotách vložené do varbinárního sloupce jsou oříznuté. |
Při vycpávky jsou znakové sloupce vycpané s prázdnými hodnotami a binární sloupce jsou vycpané nulami. Při oříznutí mají znakové sloupce koncové prázdné hodnoty oříznuté a binární sloupce mají oříznuté koncové nuly.
ANSI_PADDING musí být ON při vytváření nebo změně indexů na vypočítaných sloupcích nebo indexovaných zobrazeních. Další informace o požadovaných nastaveních možností SET s indexovanými zobrazeními a indexy ve vypočítaných sloupcích najdete v tématu Důležité informace o použití příkazů SET.
Výchozí hodnota je SET ANSI_PADDINGON. Ovladač ODBC nativního klienta SQL Serveru a zprostředkovatel OLE DB nativního klienta SQL Serveru pro SQL Server se automaticky nastaví ANSI_PADDINGON při připojování. To lze nakonfigurovat ve zdrojích dat ODBC, v atributech připojení ODBC nebo vlastnosti připojení OLE DB nastavené v aplikaci před připojením. Výchozí hodnota SET ANSI_PADDING je OFF pro připojení z DB-Library aplikací.
Nastavení SET ANSI_PADDING nemá vliv na datové typy nchar, nvarchar, ntext, text, obrázek, varbinary(max), varchar(max)a nvarchar(max). Vždy zobrazují SET ANSI_PADDING ON chování. To znamená, že koncové mezery a nuly nejsou oříznuté.
Pokud ANSI_DEFAULTS je , ONANSI_PADDINGje povolena.
Nastavení ANSI_PADDING je definováno při spuštění nebo spuštění, a ne v době analýzy.
Pokud chcete zobrazit aktuální nastavení tohoto nastavení, spusťte následující dotaz.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Povolení
Vyžaduje členství ve veřejné roli .
Příklady
Následující příklad ukazuje, jak nastavení ovlivňuje každý z těchto datových typů.
ANSI_PADDING Nastavte ON a otestujte.
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
Teď nastavte ANSI_PADDINGOFF a otestujte.
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;