Compartir vía


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

Vea también