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 |