Freigeben über


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 Offset durch das durch bit_offsetdefinierte Bit 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

Verteilte Abfragefunktionen für die Bitmanipulationsfunktionen in verknüpften Server- oder Ad-hoc-Abfragen (OPENQUERY) werden nicht unterstützt.

Datentypen für große Objekte (LOB) im Datenbankmodul können Daten speichern, die 8.000 Bytes überschreiten. Diese Datentypen speichern Daten auf einer Zeilenüberlauf Datenseite. Ein LOB umfasst auch Datentypen, die Daten in dedizierten BRANCHENseitenstrukturen speichern, die einen Text oder einen Bildzeiger von In-Zeilen-Verweisen auf LOB-Datenseiten verwenden. Weitere Informationen zur Datenspeicherung finden Sie im Pages and extents architecture guide.

Die Bitmanipulationsfunktionen arbeiten mit tinyint, smallint, int, bigint, binary(n)und varbinary(n) Datentypen. Datentypen für große Objekte (LOB), z. B. varchar(max), nvarchar(max), varbinary(max), Bild, ntext, Text, XML-und CLR-BLOB-Typen (Common Language Runtime) werden 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.