SET ANSI_PADDING (Transact-SQL)

Контролирует способ хранения в столбце значений короче, чем определенный размер столбца, и способ хранения в столбце значений, имеющих замыкающие пробелы, в данных char, varchar, binary и varbinary.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server параметр ANSI_PADDING всегда будет иметь значение ON, а любые приложения, явно устанавливающие значение параметра равным OFF, приведут к ошибке. Избегайте использования этого свойства в новых разработках и запланируйте модификацию приложений, которые сейчас ее используют.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

SET ANSI_PADDING { ON | OFF }

Замечания

Столбцы, определенные типами данных char, varchar, binary и varbinary, имеют определенный размер.

Этот параметр влияет только на определение новых столбцов. После создания столбца SQL Server сохраняет значения, исходя из значения параметра на время создания столбца. Более поздние изменения этого параметра не влияют на существующие столбцы.

ПримечаниеПримечание

Мы рекомендуем всегда устанавливать для параметра ANSI_PADDING значение ON.

В нижеследующей таблице показаны результаты влияния, оказываемого установкой SET ANSI_PADDING, когда значения вставляются в столбцы с типами данных char, varchar, binary и varbinary.

Установка

char(n) NOT NULL или binary(n) NOT NULL

char(n) NULL или binary(n) NULL

varchar(n) или varbinary(n)

ON

Заполнение исходного значения (с замыкающими пробелами для столбцов char и с замыкающими нулями для столбцов binary) до длины столбца.

Следует тем же правилам, что и char(n) или binary(n) NOT NULL, когда SET ANSI_PADDING установлен на ON.

Замыкающие пробелы в символьных значениях, вставляемых в столбцы varchar, не усекаются. Замыкающие нули в двоичных значениях, вставляемых в столбцы varbinary, не усекаются. Значения не подгоняются под длину столбца.

OFF

Заполнение исходного значения (с замыкающими пробелами для столбцов char и с замыкающими нулями для столбцов binary) до длины столбца.

Следует тем же правилам, что и varchar или varbinary, когда SET ANSI_PADDING установлен на OFF.

Замыкающие пробелы в символьных значениях, вставляемых в столбец varchar, усекаются. Замыкающие нули в двоичных значениях, вставляемых в столбец varbinary, усекаются.

ПримечаниеПримечание

При заполнении столбцы char заполняются пробелами, а столбцы binary заполняются нулями. При усечении в столбцах char усекаются замыкающие пробелы, а в столбцах binary усекаются замыкающие нули.

Инструкция SET ANSI_PADDING должна быть выполнена со значением параметра ON при создании или изменении индексов по вычисляемым столбцам или индексированным представлениям. Дополнительные сведения о настройке требуемых параметров SET с индексированными представлениями и индексами на вычисляемых столбцах см. в подразделе «Анализ использования инструкций SET» раздела SET (Transact-SQL).

По умолчанию значение параметра SET ANSI_PADDING равно ON. SQL ServerДрайвер ODBC собственного клиента и SQL Serverпоставщик OLE DB для собственного клиента для SQL Server автоматически устанавливает параметр ANSI_PADDING в значение ON при соединении. Это может быть настроено в источниках данных ODBC, в атрибутах соединения ODBC или свойствах соединения OLE DB, определенных в приложении перед установкой соединения. Значением по умолчанию для параметра инструкции SET ANSI_PADDING является OFF при соединениях из приложений DB-Library.

Значение параметра инструкции SET ANSI_PADDING не оказывает влияния на значения типа nchar, nvarchar, ntext, text, image, а также на большие значения. Они всегда демонстрируют поведение, соответствующее установленному для параметра инструкции SET ANSI_PADDING значению ON. Это означает, что конечные пробелы и нули не вырезаются.

Когда для SET ANSI_DEFAULTS установлено значение ON, параметр SET ANSI_PADDING включен.

Значение параметра SET ANSI_PADDING устанавливается во время выполнения или запуска, а не во время синтаксического анализа.

Когда значение параметра ANSI_PADDING задано OFF, запросы, включающие функции MIN, MAX и TOP для символьных столбцов, могут работать медленнее, чем в SQL Server 2000.

Разрешения

Требуется членство в роли public.

Примеры

В следующем примере показано, как значение этого параметра влияет на каждый из типов данных.

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

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