SET_BIT (Transact SQL)
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
SET_BIT gibt expression_value mit einem Offset um den in bit_offset definierten Bitwert zurück. Der Bitwert ist standardmäßig auf 1 festgelegt, oder er wird durch bit_value festgelegt.
Transact-SQL-Syntaxkonventionen
Syntax
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Argumente
expression_value
Beliebiger ganzzahliger oder binärer Ausdruck, der kein großes Objekt (LOB) ist.
bit_offset
Beliebige ganze Zahl.
Rückgabetypen
Derselbe Typ wie expression_value.
Der bit_offset-Parameter wird verwendet, um das nte Bit der festzulegenden Daten zu identifizieren. In ganzzahligen Typen ist das 0
te Bit das am wenigsten signifikante Bit. In Binärtypen ist das 0
te Bit das 0am wenigsten signifikante Bit im am weitesten rechts stehenden Byte.
bit_value kann eine ganze Zahl oder ein Bit sein. Die einzigen gültigen Werte für bit_value sind jedoch 1 und 0, unabhängig vom Datentyp. SET_BIT löst einen Fehler aus, wenn bit_value nicht 1 oder 0 oder Null ist.
SET_BIT löst einen Fehler aus, wenn bit_offset negativ oder größer als das letzte Bit im Datentyp ist.
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.
Beispiele
A. Verwenden von SET_BIT zum Ändern eines Werts
In diesem Beispiel wird das dritte Bit (bei Offset 2, nullbasierter Index) auf 1
festgelegt.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
Das Ergebnis ist 0x04
. Dies liegt daran, dass der expression_value von 0x00
in 0000
konvertiert wird. SET_BIT ändert sein drittes Bit (Offset 2) in 1, sodass es zu 0100
wird. Dieser Binärwert wird dann als 4
in Hexadezimaldarstellung zurückgegeben.
B. Verwenden von SET_BIT zum Ändern eines Werts mit einem benutzerdefinierten bit_value
In diesem Beispiel wird der bit_value auf 0 festgelegt, abweichend vom Standardwert 1.
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
Das Ergebnis ist 0xABCDEE
. Der expression_value wird in einen Binärwert konvertiert, der 1010 1011 1100 1101 1110 1111
lautet. SET_BIT ändert das erste Bit in eine 0, und das Ergebnis wird im Hexadezimalformat zurückgegeben.