RIGHT_SHIFT (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
RIGHT_SHIFT akzeptiert zwei Parameter und gibt den ersten Parameter um die Anzahl der im zweiten Parameter angegebenen Bits bitverschoben nach rechts zurück.
Auf die RIGHT_SHIFT-Funktion kann auch über den >>
-Operator zugegriffen werden.
Transact-SQL-Syntaxkonventionen
Syntax
RIGHT_SHIFT ( expression_value, shift_amount )
expression_value >> shift_amount
Argumente
expression_value
Beliebiger ganzzahliger oder binärer Ausdruck, der kein großes Objekt (LOB) ist.
shift_amount
Die Anzahl der Bits, um die expression_value verschoben werden soll. shift_amount muss ein Ganzzahltyp sein.
Rückgabetypen
Gibt denselben Typ wie expression_value zurück.
Der Parameter shift_amount wird in einen bigint umgewandelt. Der Parameter kann positiv oder negativ sein und kann auch größer als die Anzahl von Bits im Datentyp von expression_value sein. Wenn shift_amount negativ ist, erfolgt die Verschiebung in umgekehrter Richtung. LEFT_SHIFT (expr, -1)
entspricht beispielsweise RIGHT_SHIFT (expr, 1)
. Wenn shift_amount größer als die Anzahl der Bits in expression_value ist, lautet das zurückgegebene Ergebnis 0
.
RIGHT_SHIFT führt eine logische Verschiebung durch. Nachdem Bits verschoben wurden, werden alle leeren Positionen mit 0
aufgefüllt, unabhängig davon, ob der ursprüngliche Wert positiv oder negativ war.
Bemerkungen
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.
Die >>
-Methode für die RIGHT_SHIFT
-Funktion wird in Microsoft Fabric derzeit nicht unterstützt.
Beispiele
Im folgenden Beispiel wird der ganzzahlige Wert 12345 um 5 Bits nach rechts verschoben.
SELECT RIGHT_SHIFT(12345, 5);
Das Ergebnis ist 385. Wenn Sie 12345 in einen Binärwert konvertieren, erhalten Sie 0011 0000 0011 1001
. Wenn dieser Wert um 5 nach rechts verschoben wird, erhalten Sie 0001 1000 0001
, was dezimal 385
ist.
In der folgenden Tabelle wird veranschaulicht, was während der jeweiligen Verschiebung geschieht.
Ganzzahliger Wert | Binärwert | BESCHREIBUNG |
---|---|---|
12345 | 0011 0000 0011 1001 |
Anfangswert |
6172 | 0001 1000 0001 1100 |
Verschiebung nach rechts um 1 |
3086 | 0000 1100 0000 1110 |
Verschiebung nach rechts um 2 |
1543 | 0000 0110 0000 0111 |
Verschiebung nach rechts um 3 |
771 | 0000 0011 0000 0011 |
Verschiebung nach rechts um 4 |
385 | 0000 0001 1000 0001 |
Verschiebung nach rechts um 5 |