Funktionen für die Bitmanipulation

Gilt für:SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceSQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Funktionen für die Bitmanipulation wie Verschieben, Abrufen (get), Festlegen oder Zählen einzelner Bits innerhalb eines Ganzzahl- oder Binärwerts ermöglichen es Ihnen, Daten effizienter zu verarbeiten und zu speichern als mit einzelnen Bits.

Ein Bit hat zwei Werte (1 oder 0, die on oder offoder true oder false darstellen). Ein Byte besteht aus einer Abfolge von 8 Bits. Funktionen für die Bitmanipulation in SQL Server behandeln das am weitesten links stehende Bit in einem Byte als das höchste (signifikanteste). Für die Funktionen für die Bitmanipulation sind Bits von rechts nach links nummeriert, wobei Bit 0 am weitesten rechts und das niedrigste ist und Bit 7 am weitesten links und das höchste.

Beispielsweise ist eine Binärabfolge von 00000111 die dezimalen Entsprechung der Zahl 7. Sie können dies mithilfe von 2er-Potenzen wie folgt berechnen:

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

Dies bedeutet in der Praxis, dass SQL Server diesen Wert zwar als 11100000 (umgekehrte Bytereihenfolge, „byte-reversed“) speichert, er aber von den Funktionen für die Bitmanipulation als 00000111 behandelt wird.

Beim Betrachten mehrerer Bytes ist das erste Byte (links nach rechts gelesen) das höchste.

Mit den folgenden Bildern können Sie visualisieren, wie Funktionen für die Bitmanipulation von SQL Server Bit- und Byteausdruckswerte und Bit-Offsets interpretieren.

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.

Funktionen

Es gibt fünf Funktionen für die Manipulation von Bits in SQL Server:

Alle fünf Funktionen sind auf die Arbeit mit den Datentypen tinyint, smallint, int, bigint, binary(n) und varbinary(n) ausgelegt.

Die folgenden Typen werden nicht unterstützt: varchar, nvarchar, image, ntext, text, xml und table.

Hinweise

In der anfänglichen Implementierung werden die Funktionen der „Verteilten Abfrage“ für die Funktionen zur Bitmanipulation innerhalb des verknüpften Servers oder in Ad-hoc-Abfragen (OPENQUERY) nicht unterstützt.