Bagikan melalui


SET_BIT (Bertransaksi SQL)

Berlaku untuk: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceTitik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft FabricSQL database di Microsoft Fabric

SET_BIT mengembalikan offset expression_value oleh bit yang ditentukan oleh bit_offset. Nilai bit default ke 1, atau diatur oleh bit_value.

Konvensi sintaks transact-SQL

Sintaks

SET_BIT ( expression_value, bit_offset ) 
SET_BIT ( expression_value, bit_offset, bit_value )

Argumen

expression_value

Bilangan bulat atau ekspresi biner apa pun yang bukan objek besar (LOB).

bit_offset

Bilangan bulat apa pun.

Jenis yang dikembalikan

Jenis yang sama dengan expression_value.

Parameter bit_offset digunakan untuk mengidentifikasi nth bit data yang akan diatur. Dalam jenis bilangan 0bulat, bit ke-adalah bit yang paling tidak signifikan. Dalam jenis biner, 0bit ke-adalah bit paling tidak signifikan di byte paling kanan.

bit_value bisa berupa bilangan bulat atau sedikit. Namun, satu-satunya nilai yang valid untuk bit_value adalah 1 dan 0, terlepas dari jenis datanya. SET_BIT akan melemparkan kesalahan jika bit_value bukan 1 atau 0 atau null.

SET_BIT akan melemparkan kesalahan jika bit_offset negatif atau lebih besar dari bit terakhir dalam jenis data.

Keterangan

Fungsionalitas Kueri Terdistribusi untuk fungsi manipulasi bit dalam server tertaut atau kueri ad hoc (OPENQUERY) tidak didukung.

Jenis data objek besar (LOB) di Mesin Database dapat menyimpan data yang melebihi 8.000 byte. Jenis data ini menyimpan data pada halaman data luapan baris. LOB juga mencakup jenis data yang menyimpan data pada struktur halaman LOB khusus, yang menggunakan teks atau penunjuk gambar referensi dalam baris ke halaman data LOB. Untuk informasi selengkapnya tentang penyimpanan data, lihat panduan arsitektur Halaman dan tingkat.

Fungsi manipulasi bit beroperasi pada kecil, smallint , int, bigint, biner (n), dan varbinary(n) jenis data. Jenis data objek besar (LOB), seperti varchar(max), nvarchar(max), varbinary(max), gambar, ntext, teks, xml, dan jenis BLOB runtime bahasa umum (CLR), tidak didukung.

Contoh

J. Menggunakan SET_BIT untuk mengubah nilai

Dalam contoh ini, bit ketiga (pada offset 2, indeks berbasis nol) sedang diatur ke 1.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

Hasilnya adalah 0x04. Ini karena expression_value dikonversi 0x00 ke 0000. SET_BIT mengubah bit ketiganya (offset 2) menjadi 1, membuatnya 0100. Nilai biner ini kemudian dikembalikan seperti 4 dalam representasi heksadesimal.

B. Gunakan SET_BIT untuk mengubah nilai dengan bit_value kustom

Dalam contoh ini, bit_value diatur ke 0 alih-alih default 1.

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

Hasilnya adalah 0xABCDEE. expression_value dikonversi ke biner, yaitu 1010 1011 1100 1101 1110 1111. SET_BIT mengubah bit pertama menjadi 0, dan hasilnya dikembalikan dalam format heksadesimal.