Aracılığıyla paylaş


SET ANSI_PADDING (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

Sütunun tanımlı boyuttan daha kısa değerleri depolama şeklini ve sütunun char, varchar, binary ve varbinary verilerinde sondaki boş değerleri depolama biçimini denetler.

  • SET ANSI_PADDING ON - Bir sütuna eklendiklerinde dize değerlerinde sondaki boşlukları korur. Bu, ANSI uyumlu bir davranıştır.
  • SET ANSI_PADDING OFF - Bir sütuna eklendiklerinde dize değerlerindeki sondaki boşlukları kırpar. Bu, önerilen davranış değildir.

Uyarı

SET ANSI_PADDING OFF ANSI_PADDING OFF ve veritabanı seçeneği kullanım dışıdır. SQL Server 2017 (14.x) ve sonraki sürümlerinde ve Azure SQL Veritabanı ile Azure SQL Yönetilen Örneği'nde ANSI_PADDING her zaman olarak ONayarlanır. Kullanım dışı bırakılan özellikler yeni uygulamalarda kullanılmamalıdır. Daha fazla bilgi için bkz. SQL Server 2017'de Kullanım Dışı Veritabanı Altyapısı özellikleri.

Transact-SQL söz dizimi kuralları

Sözdizimi

SQL Server için söz dizimi, Azure Synapse Analytics, Microsoft Fabric'te sunucusuz SQL havuzu.

SET ANSI_PADDING { ON | OFF }

Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) için söz dizimi.

SET ANSI_PADDING ON

Açıklamalar

Char, varchar, binary ve varbinary veri türleriyle tanımlanan sütunların tanımlı bir boyutu vardır.

Bu ayar yalnızca yeni sütunların tanımını etkiler. Sütun oluşturulduktan sonra, SQL Server değerleri sütunun oluşturulduğu ayara göre depolar. Var olan sütunlar, bu ayarda daha sonra yapılan bir değişiklikten etkilenmez.

Uyarı

ANSI_PADDING her zaman olarak ONayarlanmalıdır.

Aşağıdaki tabloda değerler SET ANSI_PADDING, varchar, binary ve varbinary veri türleriyle sütunlara eklendiğinde ayarın etkileri gösterilmektedir.

Ayarlar char(n) NOT NULL veya binary(n) NOT NULL char(n) NULL veya ikili(n) NULL varchar(n) veya varbinary(n)
ON Özgün değeri ( karakter sütunları için sondaki boşluklarla ve ikili sütunlar için sondaki sıfırlarla) sütunun uzunluğuna yazın. olduğunda char(n) veya NOT NULL ile aynı kuralları izler. Varchar sütunlarına eklenen karakter değerlerinde sondaki boşluklar kırpılamaz. Varbinary sütunlarına eklenen ikili değerlerdeki sondaki sıfırlar kırpılamaz. Değerler sütunun uzunluğuna göre doldurulamaz.
OFF Özgün değeri ( karakter sütunları için sondaki boşluklarla ve ikili sütunlar için sondaki sıfırlarla) sütunun uzunluğuna yazın. olduğunda SET ANSI_PADDING veya OFF ile aynı kuralları izler. Varchar sütununa eklenen karakter değerlerinde sondaki boşluklar kırpılır. Bir varbinary sütununa eklenen ikili değerlerdeki sondaki sıfırlar kırpılır.

Doldurulduğunda, karakter sütunları boşluklarla doldurulur ve ikili sütunlar sıfırlarla doldurulur. Kırpıldığında, karakter sütunlarında sondaki boşluklar kırpılır ve ikili sütunlarda sondaki sıfırlar kırpılır.

ANSI_PADDING hesaplanan sütunlarda veya dizinlenmiş görünümlerde dizin oluştururken veya değiştirirken olmalıdır ON . Hesaplanan sütunlarda dizinlenmiş görünümler ve dizinler içeren gerekli SET seçeneği ayarları hakkında daha fazla bilgi için bkz. SET deyimlerini kullanırken dikkat edilmesi gerekenler.

için SET ANSI_PADDING varsayılan değeridir ON. SQL Server için SQL Server Yerel İstemci ODBC sürücüsü ve SQL Server Yerel İstemci OLE DB Sağlayıcısı bağlanırken otomatik olarak olarak ayarlanır ANSI_PADDINGON . Bu, bağlanmadan önce ODBC veri kaynaklarında, ODBC bağlantı özniteliklerinde veya uygulamada ayarlanan OLE DB bağlantı özelliklerinde yapılandırılabilir. için SET ANSI_PADDING varsayılan değer, DB-Library uygulamalardan gelen bağlantılar içindir OFF .

Ayar SET ANSI_PADDINGnchar, nvarchar, ntext, text, image, varbinary(max), varchar(max)ve nvarchar(max) veri türlerini etkilemez. Her zaman davranışı gösterirler SET ANSI_PADDING ON . Bu, sondaki boşlukların ve sıfırların kırpılamaması anlamına gelir.

olduğunda ANSI_DEFAULTSONANSI_PADDING etkindir.

ayarı ANSI_PADDING , ayrıştırma zamanında değil yürütme veya çalışma zamanında tanımlanır.

Bu ayarın geçerli ayarını görüntülemek için aşağıdaki sorguyu çalıştırın.

DECLARE @ANSI_PADDING VARCHAR(3) = 'OFF';
IF ( (16 & @@OPTIONS) = 16 ) SET @ANSI_PADDING = 'ON';
SELECT @ANSI_PADDING AS ANSI_PADDING;

İzinler

"" genel "" rolüne üyelik gerektirir.

Örnekler

Aşağıdaki örnekte ayarın bu veri türlerinin her birini nasıl etkilediği gösterilmektedir.

olarak ANSI_PADDING ayarlayın ON ve test edin.

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

Şimdi olarak ANSI_PADDING ayarlayın OFF ve test edin.

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;