Delen via


Bitmanipulatiefuncties

Van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

Bitmanipulatiefuncties zoals het verplaatsen, ophalen (ophalen), instellen of tellen van losse bits binnen een geheel getal of binaire waarde stellen je in staat data efficiƫnter te verwerken en op te slaan dan met individuele bits.

Een bit heeft twee waarden (1 of 0, die of off, of true of false) vertegenwoordigenon. Een byte bestaat uit een reeks van 8 bits. Bitmanipulatiefuncties in SQL Server behandelen het "meest links" bit in een byte als het grootste (het meest significante). Voor de bitmanipulatiefuncties worden bits genummerd van rechts naar links, waarbij bit 0 het meest rechts en het kleinste en 7 het bit het meest links en het grootste zijn.

Bijvoorbeeld, een binaire reeks van 00000111 is het decimale equivalent van het getal 7. Je kunt dit berekenen met machten van 2 als volgt:

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

Dit betekent in de praktijk dat terwijl SQL Server deze waarde opslaat als 11100000 (byte-reversed), de bitmanipulatiefuncties het behandelen alsof het 00000111.

Bij het bekijken van meerdere bytes is de eerste byte (van links naar rechts) de grootste.

Je kunt de volgende afbeeldingen gebruiken om te visualiseren hoe de bitmanipulatiefuncties van SQL Server bit- en byte-expressiewaarden en bitoffsets interpreteren.

int

Diagram toont een int-waarde waarbij 4 bytes het omgekeerde binaire model van elke byte van links naar rechts vertegenwoordigen.

smallint

Diagram toont een kleine int-waarde waarbij de eerste byte bits 15 tot 8 vertegenwoordigt, en de tweede byte bits 7 tot 0.

Functions

Er zijn vijf functies beschikbaar voor het manipuleren van bits in SQL Server:

Alle vijf functies zijn bedoeld om te werken op tinyint, smallint, int, bigint, binair(n) en varbinair(n) datatypes.

De volgende typen worden niet ondersteund: varchar, nvarchar, image, ntext, text, xml en table.

Opmerkingen

In de eerste implementatie wordt de functionaliteit Distributed Query voor de bitmanipulatiefuncties binnen gekoppelde servers of ad hoc queries (OPENQUERY) niet ondersteund.