Delen via


LEFT_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

LEFT_SHIFT neemt twee parameters en retourneert de eerste parameter bit-shifted left door het aantal bits dat is opgegeven in de tweede parameter.

De LEFT_SHIFT functie is ook toegankelijk via de << operator.

Transact-SQL syntaxis-conventies

Syntaxis

LEFT_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 gegevenstype 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, wordt 0het resultaat geretourneerd.

LEFT_SHIFT voert een logische verschuiving uit. Nadat bits zijn verschoven, worden alle beschikbare posities gevuld 0door, ongeacht of de oorspronkelijke waarde positief of negatief was.

Opmerkingen

In de eerste implementatie wordt gedistribueerde queryfunctionaliteit voor de bitmanipulatiefuncties binnen gekoppelde server of ad-hocquery's (OPENQUERY) niet ondersteund.

De << methode voor de LEFT_SHIFT functie wordt momenteel niet ondersteund in Microsoft Fabric.

Voorbeelden

In het volgende voorbeeld wordt de gehele waarde 12.345 met 5 bits naar links verschoven.

SELECT LEFT_SHIFT(12345, 5);

Het resultaat is 395.040. Als u 12.345 converteert naar binair, hebt 0011 0000 0011 1001u . Als u deze waarde naar links met 5 bits 0110 0000 0111 0010 0000verschuift, wordt dit 395040 een decimaal getal.

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

Integerwaarde Binaire waarde Description
12345 0011 0000 0011 1001 Startwaarde
24690 0110 0000 0111 0010 Shift links door 1
49380 1100 0000 1110 0100 Shift naar links met 2
98760 0001 1000 0001 1100 1000 Naar links schuiven met 3 en openen in een nieuwe byte
197520 0011 0000 0011 1001 0000 Naar links verschuiven met 4
395040 0110 0000 0111 0010 0000 Shift links met 5 uur