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 |