RIGHT_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
RIGHT_SHIFT accetta due parametri e restituisce il primo parametro spostato a destra del numero di bit specificato nel secondo parametro.
La funzione RIGHT_SHIFT è accessibile anche tramite l'operatore >>
.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
RIGHT_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
.
RIGHT_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 RIGHT_SHIFT
funzione non è attualmente supportato in Microsoft Fabric.
Esempi
Nell'esempio seguente il valore intero 12345 viene spostato a destra di 5 bit.
SELECT RIGHT_SHIFT(12345, 5);
Il risultato è 385. Se si converte 12345 in un valore binario, il risultato sarà 0011 0000 0011 1001
. Spostando questo valore a destra di 5 bit, si otterrà 0001 1000 0001
, che corrisponde a 385
in valori decimali.
La tabella seguente illustra cosa accade ad ogni spostamento.
Valore intero | Valore binario | Descrizione |
---|---|---|
12345 | 0011 0000 0011 1001 |
Valore iniziale |
6172 | 0001 1000 0001 1100 |
Spostamento a destra di 1 bit |
3086 | 0000 1100 0000 1110 |
Spostamento a destra di 2 bit |
1543 | 0000 0110 0000 0111 |
Spostamento a destra di 3 bit |
771 | 0000 0011 0000 0011 |
Spostamento a destra di 4 bit |
385 | 0000 0001 1000 0001 |
Spostamento a destra di 5 bit |