Partilhar via


LEFT_SHIFT (Transact SQL)

Aplica-se a: SQL Server 2022 (16.x) Azure SQL Database AzureSQL ManagedInstance SQL Analytics endpoint em Microsoft FabricWarehouse em Microsoft FabricSQL database em Microsoft Fabric

LEFT_SHIFT toma dois parâmetros e devolve o primeiro parâmetro deslocado para a esquerda pelo número de bits especificados no segundo parâmetro.

A função LEFT_SHIFT também é acessível através do << operador.

Transact-SQL convenções de sintaxe

Sintaxe

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Arguments

expression_value

Qualquer expressão inteira ou binária que não seja um objeto grande (LOB).

shift_amount

O número de bits pelos quais expression_value deve ser deslocado. shift_amount deve ser de um tipo inteiro.

Tipos de devolução

Devolve o mesmo tipo que expression_value.

O parâmetro shift_amount é lançado para um bigint. O parâmetro pode ser positivo ou negativo, e também pode ser maior do que o número de bits no tipo de dado de expression_value. Quando shift_amount é negativo, o deslocamento ocorre na direção oposta. Por exemplo, LEFT_SHIFT (expr, -1) é o mesmo que RIGHT_SHIFT (expr, 1). Quando shift_amount for maior do que o número de bits em expression_value, o resultado devolvido será 0.

LEFT_SHIFT realiza uma mudança lógica. Depois de os bits serem deslocados, quaisquer posições vagas serão preenchidas por 0, independentemente de o valor original ser positivo ou negativo.

Observações

Na implementação inicial, a funcionalidade de Consulta Distribuída para as funções de manipulação de bits dentro do servidor ligado ou consultas ad hoc (OPENQUERY) não será suportada.

O << método para a LEFT_SHIFT função não é atualmente suportado no Microsoft Fabric.

Examples

No exemplo seguinte, o valor inteiro 12345 está deslocado para a esquerda em 5 bits.

SELECT LEFT_SHIFT(12345, 5);

O resultado é 395040. Se converter 12345 para binário, tem 0011 0000 0011 1001. Deslocar isto para a esquerda em 5 torna-se 0110 0000 0111 0010 0000, que está 395040 em decimal.

A tabela seguinte demonstra o que acontece durante cada turno.

Valor inteiro Valor binário Description
12345 0011 0000 0011 1001 Valor inicial
24690 0110 0000 0111 0010 Desvio para a esquerda por 1
49380 1100 0000 1110 0100 Desvio para a esquerda por 2
98760 0001 1000 0001 1100 1000 Desloca-te para a esquerda em 3,
e abrir para um novo byte
197520 0011 0000 0011 1001 0000 Shift para a esquerda por 4
395040 0110 0000 0111 0010 0000 Desvio para a esquerda por 5

Consulte também