LEFT_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
LEFT_SHIFT akzeptiert zwei Parameter und gibt den ersten Parameter um die Anzahl der im zweiten Parameter angegebenen Bits bitverschoben nach links zurück.
Auf die LEFT_SHIFT-Funktion kann auch über den <<
-Operator zugegriffen werden.
Transact-SQL-Syntaxkonventionen
Syntax
LEFT_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
.
LEFT_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 LEFT_SHIFT
-Funktion wird in Microsoft Fabric derzeit nicht unterstützt.
Beispiele
Im folgenden Beispiel wird der ganzzahlige Wert 12345 um 5 Bits nach links verschoben.
SELECT LEFT_SHIFT(12345, 5);
Das Ergebnis ist 395040. Wenn Sie 12345 in einen Binärwert konvertieren, erhalten Sie 0011 0000 0011 1001
. Wenn dieser Wert um 5 nach links verschoben wird, erhalten Sie 0110 0000 0111 0010 0000
, was dezimal 395040
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 |
24690 | 0110 0000 0111 0010 |
Verschiebung nach links um 1 |
49380 | 1100 0000 1110 0100 |
Verschiebung nach links um 2 |
98760 | 0001 1000 0001 1100 1000 |
Verschiebung nach links um 3 und Öffnen in einem neuen Byte |
197520 | 0011 0000 0011 1001 0000 |
Verschiebung nach links um 4 |
395040 | 0110 0000 0111 0010 0000 |
Verschiebung nach links um 5 |