SET_BIT (Transact SQL)
Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric Warehouse 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.
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 0
bulat, bit ke-adalah bit yang paling tidak signifikan. Dalam jenis biner, 0
bit 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
Dalam implementasi awal, fungsionalitas Kueri Terdistribusi untuk fungsi manipulasi bit dalam server tertaut atau kueri ad hoc (OPENQUERY) tidak akan 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.