LEFT_SHIFT (Transact SQL)

Si applica a: SQL Server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

LEFT_SHIFT accetta due parametri e restituisce il primo parametro spostato a sinistra del numero di bit specificato nel secondo parametro.

La funzione LEFT_SHIFT è accessibile anche tramite l'operatore <<.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Argomenti

expression_value

Qualsiasi espressione integer o binaria diversa da un Large Object (LOB).

shift_amount

Numero di bit di cui deve essere spostato il valore expression_value. shift_amount deve essere un tipo integer.

Tipi restituiti

Restituisce lo stesso tipo di expression_value.

Viene eseguito il casting del parametro shift_amount in un bigint. Il parametro può essere positivo o negativo e può anche essere maggiore del numero di bit del tipo di dati relativo a expression_value. Se shift_amount è negativo, lo spostamento viene eseguito in direzione opposta. Ad esempio, LEFT_SHIFT (expr, -1) è identico a RIGHT_SHIFT (expr, 1). Se shift_amount è maggiore del numero di bit in expression_value, il risultato restituito sarà 0.

LEFT_SHIFT esegue uno spostamento logico. Dopo aver spostato i bit, tutte le posizioni vacanti verranno riempite da 0, indipendentemente dal fatto che il valore originale fosse positivo o negativo.

Osservazioni:

Nell'implementazione iniziale, non è supportata la funzionalità Query distribuita per le funzioni di manipolazione dei bit all'interno di un server collegato o di query ad hoc (OPENQUERY).

Il << metodo per la LEFT_SHIFT funzione non è attualmente supportato in Microsoft Fabric.

Esempi

Nell'esempio seguente il valore intero 12345 viene spostato a sinistra di 5 bit.

SELECT LEFT_SHIFT(12345, 5);

Il risultato è 395040. Se si converte 12345 in un valore binario, il risultato sarà 0011 0000 0011 1001. Spostando questo valore a sinistra di 5 bit, si otterrà 0110 0000 0111 0010 0000, che corrisponde a 395040 in valori decimali.

La tabella seguente illustra cosa accade ad ogni spostamento.

Valore intero Valore binario Descrizione
12345 0011 0000 0011 1001 Valore iniziale
24690 0110 0000 0111 0010 Spostamento a sinistra di 1
49380 1100 0000 1110 0100 Spostamento a sinistra di 2
98760 0001 1000 0001 1100 1000 Spostamento a sinistra di 3
e apertura in un nuovo byte
197520 0011 0000 0011 1001 0000 Spostamento a sinistra di 4
395040 0110 0000 0111 0010 0000 Spostamento a sinistra di 5

Vedi anche