Поделиться через


SET ANSI_PADDING (Transact-SQL)

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

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

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

Синтаксис

SET ANSI_PADDING { ON | OFF }

Замечания

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

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

ms187403.note(ru-ru,SQL.90).gifПримечание.
Мы рекомендуем всегда устанавливать для параметра 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, усекаются.

ms187403.note(ru-ru,SQL.90).gifПримечание.
При заполнении столбцы char заполняются пробелами, а столбцы binary заполняются нулями. При усечении в столбцах char усекаются замыкающие пробелы, а в столбцах binary усекаются замыкающие нули.

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

По умолчанию значение параметра SET ANSI_PADDING равно ON. Драйвер ODBC собственного клиента SQL и поставщик OLE DB для собственного клиента SQL в 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 устанавливается во время выполнения или запуска, а не во время синтаксического анализа.

Разрешения

Необходимо членство в роли 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

См. также

Справочник

SET (Transact-SQL)
SESSIONPROPERTY (Transact-SQL)
CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)

Другие ресурсы

Использование типов данных больших значений

Справка и поддержка

Получение помощи по SQL Server 2005