LEFT_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
LEFT_SHIFT toma dos parámetros y devuelve el primer parámetro desplazado a la izquierda por el número de bits especificados en el segundo parámetro.
También se puede acceder a la función LEFT_SHIFT a través del operador <<
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
LEFT_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
.
LEFT_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 LEFT_SHIFT
no se admite actualmente en Microsoft Fabric.
Ejemplos
En el ejemplo siguiente, el valor entero 12345 se desplaza a la izquierda por 5 bits.
SELECT LEFT_SHIFT(12345, 5);
El resultado es 395040. Si convierte 12345 en binario, tiene 0011 0000 0011 1001
. Al desplazar esto a la izquierda por 5, se convierte en 0110 0000 0111 0010 0000
, que es 395040
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 |
24690 | 0110 0000 0111 0010 |
Desplazamiento a la izquierda por 1 |
49380 | 1100 0000 1110 0100 |
Desplazamiento a la izquierda por 2 |
98760 | 0001 1000 0001 1100 1000 |
Desplazamiento a la izquierda por 3 y se abre en un nuevo byte |
197520 | 0011 0000 0011 1001 0000 |
Desplazamiento a la izquierda por 4 |
395040 | 0110 0000 0111 0010 0000 |
Desplazamiento a la izquierda por 5 |