SET_BIT (Transact SQL)

Gilt für:SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceSQL Analytics-Endpunkt in Microsoft FabricWarehouse 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 0te Bit das am wenigsten signifikante Bit. In Binärtypen ist das 0te 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.

Siehe auch