SET ANSI_PADDING (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure конечную точку аналитики платформы Аналитики Azure Synapse Analytics (PDW) в хранилище Microsoft Fabric в Microsoft Fabric
Управляет тем, как столбец хранит значения короче, чем определенный размер столбца, и тем, как столбец хранит значения с завершающими пробелами в данных типов char, varchar, binaryи varbinary .
Примечание.
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) или 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 усекаются замыкающие нули.
ANSI_PADDING
ON
при создании или изменении индексов в вычисляемых столбцах или индексированных представлениях. Дополнительные сведения о настройке параметров SET с индексированными представлениями и индексами в вычисляемых столбцах см. в разделе Анализ использования инструкций SET.
Значение SET ANSI_PADDING
по умолчанию — ON
. Драйвер ODBC собственного клиента SQL Server и поставщик OLE DB собственного клиента SQL Server для SQL Server автоматически устанавливаются ANSI_PADDING
ON
при подключении. Это может быть настроено в источниках данных 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;