Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL analytics endpoint в Microsoft Fabric
Warehouse в Microsoft Fabric
SQL база данных в Microsoft Fabric
Управляет тем, как столбец хранит значения короче, чем определенный размер столбца, и тем, как столбец хранит значения с завершающими пробелами в данных типов char, varchar, binaryи varbinary .
-
SET ANSI_PADDING ON— сохраняет конечные пробелы в строковых значениях при вставке в столбец. Это поведение, совместимое с ANSI. -
SET ANSI_PADDING OFF— обрезает конечные пробелы в строковых значениях при вставке в столбец. Это не рекомендуется.
Примечание.
SET ANSI_PADDING OFF
ANSI_PADDING OFF и параметр базы данных не рекомендуется. В SQL Server 2017 (14.x) и более поздних версиях, а База данных SQL Azure и Управляемый экземпляр SQL Azure ANSI_PADDING всегда задано ONзначение . Не следует использовать нерекомендуемые возможности в новых приложениях. Дополнительные сведения см. в статье об устаревших функциях ядро СУБД в SQL Server 2017.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис для SQL Server, бессерверный пул SQL в Azure Synapse Analytics, Microsoft Fabric.
SET ANSI_PADDING { ON | OFF }
Синтаксис для Системы платформы Azure Synapse Analytics и Analytics (PDW).
SET ANSI_PADDING ON
Замечания
Столбцы с типом данных 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) или когда есть. | Конечные пробелы в значениях символов, вставленных в столбцы varchar , не обрезаются. Конечные нули в двоичных значениях, вставленных в столбцы varbinary , не обрезаются. Значения не подгоняются под длину столбца. |
OFF |
Заполнение исходного значения (с замыкающими пробелами для столбцов char и с замыкающими нулями для столбцов binary) до длины столбца. | Выполняет те же правила, что и для varchar | Замыкающие пробелы в символьных значениях, вставляемых в столбец varchar, усекаются. Замыкающие нули в двоичных значениях, вставляемых в столбец varbinary, усекаются. |
При заполнении столбцы char заполняются пробелами, а столбцы binary заполняются нулями. При усечении в столбцах char усекаются замыкающие пробелы, а в столбцах binary усекаются замыкающие нули.
ANSI_PADDING
ON при создании или изменении индексов в вычисляемых столбцах или индексированных представлениях. Дополнительные сведения о настройке параметров SET с индексированными представлениями и индексами в вычисляемых столбцах см. в разделе Анализ использования инструкций SET.
Значение SET ANSI_PADDING по умолчанию — ON. Драйвер ODBC собственного клиента SQL Server и поставщик OLE DB собственного клиента SQL Server для SQL Server автоматически устанавливаются ANSI_PADDINGON при подключении. Это может быть настроено в источниках данных ODBC, в атрибутах соединения ODBC или свойствах соединения OLE DB, определенных в приложении перед установкой соединения. Значение по умолчанию SET ANSI_PADDING предназначено OFF для подключений из приложений DB-Library.
Параметр SET ANSI_PADDING не влияет на типы данных nchar, nvarchar, ntext, text, image, varbinary(max), varchar(max)и nvarchar(max). Они всегда отображают SET ANSI_PADDING ON поведение. Это означает, что конечные пробелы и нули не обрезаются.
Если ANSI_DEFAULTS задано ONзначение , ANSI_PADDING включен.
Параметр ANSI_PADDING определяется во время выполнения или выполнения, а не во время синтаксического анализа.
Чтобы просмотреть текущее значение для этого параметра, выполните следующий запрос.
DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;
Разрешения
Необходимо быть членом роли public.
Примеры
В следующем примере показано, как значение этого параметра влияет на каждый из типов данных.
Установите ANSI_PADDING и ON проверьте.
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
Теперь установите ANSI_PADDING и OFF проверьте.
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;