RIGHT_SHIFT (Transact SQL)
Se aplica a: Sql Server 2022 (16.x) Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse en Microsoft Fabric
RIGHT_SHIFT toma dos parámetros y devuelve el primer parámetro desplazado a la derecha por el número de bits especificados en el segundo parámetro.
También se puede acceder a la función RIGHT-SHIFT a través del operador >>
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
RIGHT_SHIFT ( expression_value, shift_amount )
expression_value >> shift_amount
Argumentos
expression_value
Cualquier expresión entera o binaria que no sea un objeto grande (LOB).
shift_amount
Número de bits por los que expression_value debe desplazarse. shift_amount debe ser un tipo entero.
Tipos de valores devueltos
Devuelve el mismo tipo que expression_value.
El parámetro shift_amount se convierte en bigint. El parámetro puede ser positivo o negativo, y también puede ser mayor que el número de bits del tipo de datos de expression_value. Cuando shift_amount es negativo, el desplazamiento funciona en la dirección opuesta. Por ejemplo, LEFT_SHIFT (expr, -1)
es lo mismo que RIGHT_SHIFT (expr, 1)
. Cuando shift_amount es mayor que el número de bits de expression_value, el resultado devuelto será 0
.
RIGHT_SHIFT realiza un desplazamiento lógico. Una vez desplazados los bits, cualquier posición vacía se rellenará con 0
, independientemente de si el valor original era positivo o negativo.
Observaciones
En la implementación inicial, no se admitirá la funcionalidad de consulta distribuida para las funciones de manipulación de bits dentro del servidor vinculado o las consultas ad hoc (OPENQUERY).
El método >>
de la función RIGHT_SHIFT
no se admite actualmente en Microsoft Fabric.
Ejemplos
En el ejemplo siguiente, el valor entero 12345 se desplaza a la derecha por 5 bits.
SELECT RIGHT_SHIFT(12345, 5);
El resultado es 385. Si convierte 12345 en binario, tiene 0011 0000 0011 1001
. Al desplazar esto a la derecha por 5 se convierte en 0001 1000 0001
, que es 385
en decimal.
En la tabla siguiente se muestra lo que sucede durante cada desplazamiento.
Valor entero | Valor binario | Descripción |
---|---|---|
12345 | 0011 0000 0011 1001 |
Valor inicial |
6172 | 0001 1000 0001 1100 |
Desplazamiento a la derecha por 1 |
3086 | 0000 1100 0000 1110 |
Desplazamiento a la derecha por 2 |
1543 | 0000 0110 0000 0111 |
Desplazamiento a la derecha por 3 |
771 | 0000 0011 0000 0011 |
Desplazamiento a la derecha por 4 |
385 | 0000 0001 1000 0001 |
Desplazamiento a la derecha por 5 |