Udostępnij za pośrednictwem


ZESTAW ANSI_PADDING (Transact-SQL)

Dotyczy:sql Serverazure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy SQL w usłudze Microsoft FabricWarehouse 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 OFFi 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_PADDINGON. Sterownik ODBC klienta natywnego programu SQL Server i dostawca OLE DB klienta natywnego programu SQL Server dla programu SQL Server automatycznie ustawiany ANSI_PADDINGON 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 ONwartość , 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;