Delen via


RIGHT_SHIFT (Transact SQL)

Van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

RIGHT_SHIFT neemt twee parameters en geeft de eerste parameter bitverschoven terug met het aantal bits dat in de tweede parameter is gespecificeerd.

De RIGHT_SHIFT functie is ook toegankelijk via de >> operator.

Transact-SQL syntaxis-conventies

Syntaxis

RIGHT_SHIFT ( expression_value, shift_amount )
expression_value >> shift_amount

Arguments

expression_value

Elke gehele of binaire expressie die geen groot object is (LOB).

shift_amount

Het aantal bits waarmee expression_value moet worden verschoven. shift_amount moet een geheel getal zijn.

Retourtypen

Geeft hetzelfde type terug als expression_value.

De shift_amount parameter wordt omgezet naar een bigint. De parameter kan positief of negatief zijn, en kan ook groter zijn dan het aantal bits in het datatype van expression_value. Wanneer shift_amount negatief is, werkt de verschuiving in de tegenovergestelde richting. LEFT_SHIFT (expr, -1) is bijvoorbeeld hetzelfde als RIGHT_SHIFT (expr, 1). Wanneer shift_amount groter is dan het aantal bits in expression_value, zal het resultaat dat wordt teruggegeven zijn 0.

RIGHT_SHIFT voert een logische omslag uit. Nadat bits zijn verschoven, worden alle openstaande posities ingevuld door 0, ongeacht of de oorspronkelijke waarde positief of negatief was.

Opmerkingen

In de eerste implementatie wordt de functionaliteit Distributed Query voor de bitmanipulatiefuncties binnen gekoppelde servers of ad hoc queries (OPENQUERY) niet ondersteund.

De >> methode voor de RIGHT_SHIFT functie wordt momenteel niet ondersteund in Microsoft Fabric.

Voorbeelden

In het volgende voorbeeld is de gehele waarde 12345 met 5 bits rechtsverschoven.

SELECT RIGHT_SHIFT(12345, 5);

Het resultaat is 385. Als je 12345 omzet naar binair, heb 0011 0000 0011 1001je . Als je dit naar rechts verschuift met 5, wordt 0001 1000 0001dit , wat in decimaal is 385 .

De volgende tabel laat zien wat er tijdens elke dienst gebeurt.

Integerwaarde Binaire waarde Description
12345 0011 0000 0011 1001 Startwaarde
6172 0001 1000 0001 1100 Schuif naar rechts met 1
3086 0000 1100 0000 1110 Schuif 2 naar rechts
1543 0000 0110 0000 0111 Schuif 3 keer naar rechts
771 0000 0011 0000 0011 Shift 4 keer naar rechts
385 0000 0001 1000 0001 Shift naar rechts om 5 uur

Zie ook