Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
punkt końcowy analizy SQL w usłudze Microsoft Fabric
Warehouse w usłudze Microsoft Fabric
Określa sposób przechowywania wartości krótszych niż zdefiniowany rozmiar kolumny oraz sposób przechowywania wartości końcowych w danych char, varchar, binary i varbinary .
-
SET ANSI_PADDING ON
— zachowuje końcowe wartości puste w wartościach ciągu po wstawieniu ich do kolumny. Jest to zachowanie zgodne ze standardem ANSI. -
SET ANSI_PADDING OFF
— przycina końcowe wartości puste w wartościach ciągu po wstawieniu ich do kolumny. Nie jest to zalecane zachowanie.
Uwaga / Notatka
SET ANSI_PADDING OFF
i ANSI_PADDING OFF
opcja bazy danych są przestarzałe. W programie SQL Server 2017 (14.x) i nowszych wersjach oraz w usługach Azure SQL Database i Azure SQL Managed Instance ANSI_PADDING
zawsze ustawiono wartość ON
. Przestarzałe funkcje nie powinny być używane w nowych aplikacjach. Aby uzyskać więcej informacji, zobacz Przestarzałe funkcje aparatu bazy danych w programie SQL Server 2017.
Transact-SQL konwencje składni
Składnia
Składnia dla programu SQL Server, bezserwerowej puli SQL w usłudze Azure Synapse Analytics, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Składnia dla usług Azure Synapse Analytics i Analytics Platform System (PDW).
SET ANSI_PADDING ON
Uwagi
Kolumny zdefiniowane za pomocą typów danych char, varchar, binary i varbinary mają zdefiniowany rozmiar.
To ustawienie ma wpływ tylko na definicję nowych kolumn. Po utworzeniu kolumny program SQL Server przechowuje wartości na podstawie ustawienia podczas tworzenia kolumny. Na istniejące kolumny nie ma wpływu późniejsza zmiana tego ustawienia.
Uwaga / Notatka
ANSI_PADDING
należy zawsze ustawić wartość ON
.
W poniższej tabeli przedstawiono efekty SET ANSI_PADDING
ustawienia, gdy wartości są wstawiane do kolumn z typami danych char, varchar, binary i varbinary .
Ustawienia | char(n) NOT NULL lub binary(n) NOT NULL | char(n) NULL lub binary(n) NULL | varchar(n) lub varbinary(n) |
---|---|---|---|
ON |
Dopełnij oryginalną wartość (z końcowymi wartościami pustymi dla kolumn char i zerami końcowymi dla kolumn binarnych ) do długości kolumny. | Stosuje się te same reguły co w przypadku znaków(n) lub binary(n),NOT NULL gdy SET ANSI_PADDING ma wartość ON . |
Końcowe wartości puste w wartościach znaków wstawionych do kolumn varchar nie są przycinane. Końcowe zera w wartościach binarnych wstawionych do kolumn warianyjnych nie są przycinane. Wartości nie są dopełniane do długości kolumny. |
OFF |
Dopełnij oryginalną wartość (z końcowymi wartościami pustymi dla kolumn char i zerami końcowymi dla kolumn binarnych ) do długości kolumny. | Stosuje się te same reguły co w przypadku wartości varchar lub varbinary , gdy SET ANSI_PADDING ma wartość OFF . |
Końcowe wartości puste w wartościach znaków wstawionych do kolumny varchar są przycinane. Końcowe zera w wartościach binarnych wstawionych do kolumny varbinary są przycinane. |
Po dopełnieniu kolumny znaków są dopełniane pustymi wartościami, a kolumny binarne są dopełniane zerami. Po przycięciu kolumny znaków mają przycięte końcowe wartości puste, a kolumny binarne mają przycięte zera końcowe.
ANSI_PADDING
musi być ON
, gdy tworzysz lub zmieniasz indeksy w kolumnach obliczeniowych lub indeksowanych widokach. Aby uzyskać więcej informacji na temat wymaganych ustawień opcji SET z indeksowanych widoków i indeksów w kolumnach obliczanych, zobacz Zagadnienia dotyczące używania instrukcji SET.
Wartość domyślna to SET ANSI_PADDING
ON
. Sterownik ODBC klienta natywnego programu SQL Server i dostawca OLE DB klienta natywnego programu SQL Server dla programu SQL Server automatycznie ustawiany ANSI_PADDING
ON
podczas nawiązywania połączenia. Można to skonfigurować w źródłach danych ODBC, w atrybutach połączenia ODBC lub właściwości połączenia OLE DB ustawionych w aplikacji przed nawiązaniem połączenia. Wartość domyślna SET ANSI_PADDING
dotyczy OFF
połączeń z aplikacji DB-Library.
Ustawienie SET ANSI_PADDING
nie ma wpływu na typy danych nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max)i nvarchar(max). Zawsze wyświetlają SET ANSI_PADDING ON
zachowanie. Oznacza to, że końcowe spacje i zera nie są przycinane.
Gdy ANSI_DEFAULTS
parametr ma ON
wartość , ANSI_PADDING
jest włączony.
Ustawienie elementu jest definiowane ANSI_PADDING
w czasie wykonywania lub wykonywania, a nie w czasie analizy.
Aby wyświetlić bieżące ustawienie dla tego ustawienia, uruchom następujące zapytanie.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Uprawnienia
Wymaga członkostwa w publicznej roli .
Przykłady
W poniższym przykładzie pokazano, jak ustawienie wpływa na każdy z tych typów danych.
Ustaw ANSI_PADDING
wartość ON
i przetestuj.
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
Teraz ustaw wartość ANSI_PADDING
i OFF
przetestuj.
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;