Udostępnij przez


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 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
  • RIGHT_SHIFT (Transact SQL)
  • SET_BIT (Transact SQL)
  • GET_BIT (Transact SQL)
  • BIT_COUNT (Transact SQL)
  • funkcje manipulowania bitami