Udostępnij za pomocą


LEFT_SHIFT (Transact SQL)

Dotyczy do: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

LEFT_SHIFT przyjmuje dwa parametry i zwraca pierwszy parametr przesunięty o bity o liczbę bitów podaną w drugim parametrze.

Funkcja LEFT_SHIFT jest również dostępna przez 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, a także 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). Gdy shift_amount jest większe niż liczba bitów w expression_value, wynik zwrócony będzie .0

LEFT_SHIFT wykonuje logiczną zmianę. Po przesunięciu bitów wszelkie wolne miejsca zostaną wypełnione przez 0, niezależnie od tego, czy pierwotna wartość była dodatnia czy ujemna.

Uwagi

W początkowej implementacji funkcjonalność Distributed Query dla funkcji manipulacji bitami w serwerze połączonym lub zapytaniach ad hoc (OPENQUERY) nie będzie obsługiwana.

Metoda << tej LEFT_SHIFT funkcji nie jest obecnie obsługiwana w Microsoft Fabric.

Przykłady

W poniższym przykładzie wartość całkowita 12345 jest przesunięta w lewo o 5 bitów.

SELECT LEFT_SHIFT(12345, 5);

Wynik to 395040. Jeśli przekształcisz 12345 na binarny, otrzymasz 0011 0000 0011 1001. Przesunięcie tego o 5 w lewo staje się , 0110 0000 0111 0010 0000co jest dziesiętnym 395040 .

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 Przesuń się w lewo o 3,
i otwiera się do nowego bajtu
197520 0011 0000 0011 1001 0000 Przesuń się w lewo o 4
395040 0110 0000 0111 0010 0000 Przesuń się w lewo o 5

Zobacz także

  • RIGHT_SHIFT (Transact SQL)
  • SET_BIT (Transact SQL)
  • GET_BIT (Transact SQL)
  • BIT_COUNT (Transact SQL)
  • funkcje manipulowania bitami