Compartir a través de


LEFT_SHIFT (Transact SQL)

Aplica a: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint en Microsoft FabricWarehouse en Microsoft Fabric DatabaseSQL en Microsoft Fabric

LEFT_SHIFT toma dos parámetros y devuelve el primer parámetro desplazado bit a la izquierda por el número de bits especificados en el segundo parámetro.

La LEFT_SHIFT función también es accesible 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 es 0.

LEFT_SHIFT realiza un desplazamiento lógico. Después de cambiar los bits, las posiciones vacantes se rellenan mediante 0, independientemente de si el valor original era positivo o negativo.

Observaciones

En la implementación inicial, no se admite 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 LEFT_SHIFT función no se admite actualmente en Microsoft Fabric.

Ejemplos

En el ejemplo siguiente, el valor entero 12.345 se desplaza a la izquierda por 5 bits.

SELECT LEFT_SHIFT(12345, 5);

El resultado es 395 040. Si convierte 12 345 a binario, tiene 0011 0000 0011 1001. El desplazamiento de este valor a la izquierda por 5 bits se convierte en , que se encuentra 0110 0000 0111 0010 0000395040 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 Cambie a la izquierda por 3 y abra 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