Bagikan melalui


Fungsi manipulasi bit

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

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 memperlihatkan nilai int di mana 4 byte mewakili biner terbalik dari setiap byte dari kiri ke kanan.

smallint

Diagram memperlihatkan nilai int kecil di mana byte pertama mewakili bit 15 hingga 8, dan byte kedua mewakili bit 7 hingga 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.