SET ANSI_PADDING (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Mengontrol cara kolom menyimpan nilai yang lebih pendek dari ukuran kolom yang ditentukan, dan cara kolom menyimpan nilai yang memiliki kosong di karakter, varchar, biner, dan data varbinary.

Catatan

SET ANSI_PADDING OFF dan opsi ANSI_PADDING OFF database tidak digunakan lagi. Dimulai dengan SQL Server 2017 (14.x), ANSI_PADDING selalu diatur ke AKTIF. Fitur yang tidak digunakan lagi tidak boleh digunakan dalam aplikasi baru. Untuk informasi selengkapnya, lihat Fitur Mesin Database yang Tidak Digunakan Lagi di SQL Server 2017.

Konvensi sintaks transact-SQL

Sintaks

Sintaks untuk SQL Server, kumpulan SQL tanpa server di Azure Synapse Analytics, Microsoft Fabric

SET ANSI_PADDING { ON | OFF }

Sintaks untuk Azure Synapse Analytics dan Analytics Platform System (PDW)

SET ANSI_PADDING ON

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Keterangan

Kolom yang ditentukan dengan tipe data karakter, varchar, biner, dan varbinary memiliki ukuran yang ditentukan.

Pengaturan ini hanya memengaruhi definisi kolom baru. Setelah kolom dibuat, SQL Server menyimpan nilai berdasarkan pengaturan saat kolom dibuat. Kolom yang ada tidak dipengaruhi oleh perubahan selanjutnya pada pengaturan ini.

Catatan

ANSI_PADDING harus selalu diatur ke AKTIF.

Tabel berikut ini memperlihatkan efek pengaturan SET ANSI_PADDING saat nilai disisipkan ke dalam kolom dengan tipe data karakter, varchar, biner, dan varbinary .

Pengaturan char(n) NOT NULL atau binary(n) NOT NULL char(n) NULL atau biner(n) NULL varchar(n) atau varbinary(n)
ON Nilai asli Pad (dengan kosong berikutnya untuk kolom karakter dan dengan nol berikutnya untuk kolom biner ) hingga panjang kolom. Mengikuti aturan yang sama seperti untuk char(n) atau biner(n) NOT NULL saat SET ANSI_PADDING AKTIF. Kosong berikutnya dalam nilai karakter yang disisipkan ke dalam kolom varchar tidak dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbiner tidak dipangkas. Nilai tidak diisi ke panjang kolom.
OFF Nilai asli Pad (dengan kosong berikutnya untuk kolom karakter dan dengan nol berikutnya untuk kolom biner ) hingga panjang kolom. Mengikuti aturan yang sama seperti untuk varchar atau varbinary saat SET ANSI_PADDING NONAKTIF. Kosong berikutnya dalam nilai karakter yang disisipkan ke dalam kolom varchar dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbiner dipangkas .

Catatan

Saat diisi, kolom karakter diisi dengan kosong, dan kolom biner diisi dengan nol. Saat dipangkas, kolom karakter memiliki kosong berikutnya yang dipangkas, dan kolom biner memiliki nol berikutnya yang dipangkas.

ANSI_PADDING harus AKTIF saat Anda membuat atau mengubah indeks pada kolom komputasi atau tampilan terindeks. Untuk informasi selengkapnya tentang pengaturan opsi SET yang diperlukan dengan tampilan dan indeks terindeks pada kolom komputasi, lihat "Pertimbangan Saat Anda Menggunakan Pernyataan SET" dalam Pernyataan SET (Transact-SQL).

Default untuk SET ANSI_PADDING adalah AKTIF. Driver ODBC Klien Asli SQL Server dan Penyedia OLE DB Klien Asli SQL Server untuk SQL Server secara otomatis mengatur ANSI_PADDING ke AKTIF saat menyambungkan. Ini dapat dikonfigurasi di sumber data ODBC, di atribut koneksi ODBC, atau properti koneksi OLE DB yang diatur dalam aplikasi sebelum menyambungkan. Default untuk SET ANSI_PADDING NONAKTIF untuk koneksi dari aplikasi DB-Library.

Pengaturan SET ANSI_PADDING tidak memengaruhi jenis data nchar, nvarchar, ntext, teks, gambar, varbinary(max), varchar(max), dan nvarchar(max ). Mereka selalu menampilkan perilaku SET ANSI_PADDING ON. Ini berarti spasi berikutnya dan nol tidak dipangkas.

Saat ANSI_DEFAULTS AKTIF, ANSI_PADDING diaktifkan.

Pengaturan ANSI_PADDING didefinisikan pada waktu eksekusi atau run time dan bukan pada waktu penguraian.

Untuk menampilkan pengaturan saat ini untuk pengaturan ini, jalankan kueri berikut.

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

Izin

Memerlukan keanggotaan dalam peran publik .

Contoh

Contoh berikut menunjukkan bagaimana pengaturan memengaruhi masing-masing jenis data ini.

Atur ANSI_PADDING ke AKTIF dan uji.

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  

Sekarang atur ANSI_PADDING ke NONAKTIF dan uji.

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;