Freigeben über


Funktionen für die Bitmanipulation

Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL verwaltete Instanz SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse 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

Diagramm eines Ganzzahlwerts, bei dem 4 Bytes den umgekehrten Binärwert jedes Bytes von links nach rechts darstellen.

smallint

Diagramm eines kleinen Ganzzahlwerts (small int), bei dem das erste Byte die Bits 15 bis 8 und das zweite Byte die Bits 7 bis 0 darstellt.

Functions

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.