Bagikan melalui


SET_BIT (Transact SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft FabricWarehouse 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

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.

Baca juga