Bagikan melalui


SET ANSI_PADDING (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse 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 ANSI_PADDING OFF opsi database, tidak digunakan lagi. Di SQL Server 2017 (14.x) dan versi yang lebih baru, dan Azure SQL Database dan Azure SQL Managed Instance, ANSI_PADDING selalu diatur ke ON. 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 terpengaruh oleh perubahan selanjutnya pada pengaturan ini.

Catatan

ANSI_PADDING harus selalu diatur ke ON.

Tabel berikut ini memperlihatkan efek SET ANSI_PADDING pengaturan 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 adalah .ON Kosong berikutnya dalam nilai karakter yang disisipkan ke dalam kolom varchar tidak dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbinary 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 ketika SET ANSI_PADDING adalah OFF. Kosong berikutnya dalam nilai karakter yang disisipkan ke dalam kolom varchar dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbiner dipangkas .

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 ON 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.

Default untuk SET ANSI_PADDING adalah ON. Driver ODBC SQL Server Native Client dan SQL Server Native Client OLE DB Provider untuk SQL Server secara otomatis diatur ANSI_PADDING ke ON 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 adalah OFF untuk koneksi dari aplikasi DB-Library.

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

Ketika ANSI_DEFAULTS adalah ON, ANSI_PADDING diaktifkan.

Pengaturan ANSI_PADDING didefinisikan pada waktu eksekusi atau eksekusi 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 ON 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 OFF 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;