LEFT_SHIFT (Transact SQL)

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstancePunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento 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

Vea también