LEFT_SHIFT (Transact SQL)

Aplica-se a:SQL Server 2022 (16.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePonto de extremidade de análises SQL no Microsoft FabricWarehouse 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