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