SET ANSI_PADDING (SQL T-T-T)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
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 .
Sintaks
Sintaks untuk kumpulan SQL SQL Server dan tanpa server di Azure Synapse Analytics
SET ANSI_PADDING { ON | OFF }
Sintaks untuk Azure Synapse Analytics and Analytics Platform System (PDW)
SET ANSI_PADDING ON
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Keterangan
Kolom yang ditentukan dengan jenis 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 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) |
|---|---|---|---|
| AKTIF | Pad nilai asli (dengan kosong di belakang 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 dimasukkan ke dalam kolom varchar tidak dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbiner tidak dipangkas. Nilai tidak diisi dengan panjang kolom. |
| TIDAK AKTIF | Pad nilai asli (dengan kosong di belakang 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 di belakang dalam nilai karakter yang disisipkan ke dalam kolom varchar dipangkas. Nol berikutnya dalam nilai biner yang dimasukkan ke dalam kolom varbinary dipangkas . |
Catatan
Saat di-padding, kolom karakter diisi dengan kosong, dan kolom biner dilapisi 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 SQL Server Native Client ODBC dan Penyedia OLE DB SQL Server Native Client untuk SQL Server secara otomatis mengatur ANSI_PADDING ke AKTIF saat menyambungkan. Ini dapat dikonfigurasi dalam sumber data ODBC, dalam 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, text, image, varbinary(max), varchar(max), dan nvarchar(max ). Mereka selalu menampilkan perilaku SET ANSI_PADDING ON. Ini berarti spasi di belakang 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;
Lihat juga
Pernyataan SET (Transact-SQL)
SESSIONPROPERTY (SQL Transact)
BUAT TABEL (Transact-SQL)
INSERT (Transact-SQL)
SET ANSI_DEFAULTS (SQL Bertransaksi)
