Partilhar via


RIGHT_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

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

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

Transact-SQL convenções de sintaxe

Sintaxe

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

RIGHT_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 RIGHT_SHIFT função não é atualmente suportado no Microsoft Fabric.

Examples

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

SELECT RIGHT_SHIFT(12345, 5);

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

Consulte também