Compartilhar via


RIGHT_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

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

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

Convenções de sintaxe de Transact-SQL

Sintaxe

RIGHT_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.

RIGHT_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 RIGHT_SHIFT no Microsoft Fabric.

Exemplos

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

SELECT RIGHT_SHIFT(12345, 5);

O resultado é 385. Se você converter 12345 em binário, terá 0011 0000 0011 1001. Deslocar isso para a direita em 5 torna-se 0001 1000 0001, que é 385 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
6172 0001 1000 0001 1100 Desloque para a direita por 1
3086 0000 1100 0000 1110 Desloque para a direita por 2
1543 0000 0110 0000 0111 Desloque para a direita por 3
771 0000 0011 0000 0011 Desloque para a direita por 4
385 0000 0001 1000 0001 Desloque para a direita por 5

Confira também