Partilhar via


LEFT_SHIFT (Transact SQL)

Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric

LEFT_SHIFT usa dois parâmetros e retorna o primeiro parâmetro com bit deslocado para a esquerda pelo número de bits especificado no segundo parâmetro.

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

Convenções de sintaxe de Transact-SQL

Sintaxe

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Argumentos

expression_value

Qualquer expressão binária ou de número inteiro que não seja um LOB (objeto grande).

shift_amount

O número de bits pelo qual expression_value deve ser deslocado. shift_amount deve ser um tipo inteiro.

Tipos de retorno

Retorna o mesmo tipo que expression_value.

O parâmetro shift_amount é convertido em 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 dados de expression_value. Quando shift_amount é negativo, a mudança opera na direção oposta. Por exemplo, LEFT_SHIFT (expr, -1) é o mesmo que RIGHT_SHIFT (expr, 1). Quando shift_amount for maior que o número de bits em expression_value, o resultado retornado será 0.

LEFT_SHIFT executa um deslocamento lógico. Depois que os bits forem deslocados, todas as posições vagas serão preenchidas por 0, independentemente de o valor original ser positivo ou negativo.

Comentários

Na implementação inicial, não haverá suporte para a funcionalidade de Consulta Distribuída para as funções de manipulação de bits no servidor vinculado ou em consultas ad hoc (OPENQUERY).

No momento, não há suporte do método << para a função LEFT_SHIFT no Microsoft Fabric.

Exemplos

No exemplo a seguir, o valor inteiro 12345 é deslocado para a esquerda em 5 bits.

SELECT LEFT_SHIFT(12345, 5);

O resultado é 395040. Se você converter 12345 em binário, terá 0011 0000 0011 1001. Deslocar isso para a esquerda em 5 torna-se 0110 0000 0111 0010 0000, que é 395040 em decimais.

A tabela a seguir demonstra o que acontece durante cada deslocamento.

Valor inteiro Valor binário Descrição
12345 0011 0000 0011 1001 Valor inicial
24690 0110 0000 0111 0010 Desloque para a esquerda por 1
49380 1100 0000 1110 0100 Desloque para a esquerda por 2
98760 0001 1000 0001 1100 1000 Desloque para a esquerda por 3,
e abra em um novo byte
197520 0011 0000 0011 1001 0000 Desloque para a esquerda por 4
395040 0110 0000 0111 0010 0000 Desloque para a esquerda por 5

Confira também