Fungsi manipulasi bit

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft FabricWarehouse di Microsoft Fabric

Fungsi manipulasi bit seperti memindahkan, mengambil (mendapatkan), mengatur, atau menghitung bit tunggal dalam bilangan bulat atau nilai biner, memungkinkan Anda memproses dan menyimpan data lebih efisien daripada dengan bit individual.

Bit memiliki dua nilai (1 atau 0, yang mewakili on atau off, atau true atau false). Byte terdiri dari urutan 8 bit. Fungsi manipulasi bit di SQL Server memperlakukan bit "paling kiri" dalam byte sebagai yang terbesar (yang paling signifikan). Untuk fungsi manipulasi bit, bit diberi nomor dari kanan ke kiri, dengan bit 0 menjadi yang paling kanan dan terkecil dan bit 7 menjadi yang paling kiri dan terbesar.

Misalnya, urutan biner adalah 00000111 desimal yang setara dengan angka 7. Anda dapat menghitung ini menggunakan kekuatan 2 sebagai berikut:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

Apa artinya dalam praktiknya adalah bahwa sementara SQL Server menyimpan nilai ini sebagai 11100000 (byte-reversed), fungsi manipulasi bit akan memperlakukannya seolah-olah itu 00000111.

Saat melihat beberapa byte, byte pertama (membaca kiri ke kanan) adalah yang terbesar.

Anda dapat menggunakan gambar berikut untuk memvisualisasikan bagaimana fungsi manipulasi bit SQL Server menginterpretasikan nilai ekspresi bit dan byte dan offset bit.

int

Diagram showing an int value where 4 bytes represent the reversed binary of each byte from left to right.

smallint

Diagram showing a small int value where the first byte represents bits 15 to 8, and the second byte represents bits 7 to 0.

Fungsi

Ada lima fungsi yang tersedia untuk memanipulasi bit di SQL Server:

Kelima fungsi dimaksudkan untuk beroperasi pada jenis data tinyint, smallint, int, bigint, binary(n), dan varbinary(n).

Jenis berikut tidak didukung: varchar, nvarchar, gambar, ntext, teks, xml, dan tabel.

Keterangan

Dalam implementasi awal, fungsionalitas Kueri Terdistribusi untuk fungsi manipulasi bit dalam server tertaut atau kueri ad hoc (OPENQUERY) tidak akan didukung.