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 off
oder 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
smallint
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.