Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
LEFT_SHIFT Przyjmuje dwa parametry i zwraca pierwszy parametr przesunięty bitowo w lewo przez liczbę bitów określonych w drugim parametrze.
Funkcja LEFT_SHIFT jest również dostępna za pośrednictwem << operatora .
Transact-SQL konwencje składni
Składnia
LEFT_SHIFT ( expression_value , shift_amount )
expression_value << shift_amount
Arguments
expression_value
Każde wyrażenie całkowitoliczbowe lub binarne, które nie jest dużym obiektem (LOB).
shift_amount
Liczba bitów, o które expression_value powinien zostać przesunięty. shift_amount musi być typu całkowitoliczbowego.
Typy zwracane
Zwraca ten sam typ co expression_value.
Parametr shift_amount jest odlewany do biminty. Parametr może być dodatni lub ujemny i może być również większy niż liczba bitów w typie danych expression_value. Gdy shift_amount jest ujemna, przesunięcie działa w przeciwnym kierunku. Na przykład LEFT_SHIFT (expr, -1) jest taka sama jak RIGHT_SHIFT (expr, 1). Jeśli shift_amount jest większa niż liczba bitów w expression_value, zwracany wynik to 0.
LEFT_SHIFT wykonuje zmianę logiczną. Po przesunięciu bitów wszystkie wolne pozycje są wypełniane przez 0, niezależnie od tego, czy oryginalna wartość była dodatnia, czy ujemna.
Uwagi
W początkowej implementacji funkcja zapytania rozproszonego dla funkcji manipulowania bitami na serwerze połączonym lub zapytaniach ad hoc (OPENQUERY) nie jest obsługiwana.
<< Metoda LEFT_SHIFT funkcji nie jest obecnie obsługiwana w usłudze Microsoft Fabric.
Przykłady
W poniższym przykładzie wartość całkowita 12 345 jest przesunięta w lewo o 5 bitów.
SELECT LEFT_SHIFT(12345, 5);
Wynik to 395 040. Jeśli przekonwertujesz wartość 12 345 na binarną, masz wartość 0011 0000 0011 1001. Przesunięcie tej wartości w lewo o 5 bitów staje się 0110 0000 0111 0010 0000wartością , która jest 395040 wyrażona w przecinku.
Poniższa tabela pokazuje, co dzieje się podczas każdej zmiany.
| Wartość całkowita | Wartość binarna | Description |
|---|---|---|
12345 |
0011 0000 0011 1001 |
Wartość początkowa |
24690 |
0110 0000 0111 0010 |
Przesunięcie w lewo o 1 |
49380 |
1100 0000 1110 0100 |
Przesuń się w lewo o 2 |
98760 |
0001 1000 0001 1100 1000 |
Przesunięcie w lewo o 3 i otwarcie w nowym bajtze |
197520 |
0011 0000 0011 1001 0000 |
Przesuń się w lewo o 4 |
395040 |
0110 0000 0111 0010 0000 |
Przesuń się w lewo o 5 |