LEFT_SHIFT (Transact SQL)

Gäller för: 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 tar två parametrar och returnerar den första parametern bit-förskjuten åt vänster med antalet bitar specificerade i den andra parametern.

Funktionen LEFT_SHIFT är också tillgänglig via operatorn << .

Transact-SQL syntaxkonventioner

Syntax

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Arguments

expression_value

Alla heltals- eller binäruttryck som inte är ett stort objekt (LOB).

shift_amount

Antalet bitar med vilka expression_value ska flyttas. shift_amount måste vara av heltalstyp.

Returtyper

Returnerar samma typ som expression_value.

Den shift_amount parametern kastas till en bigint. Parametern kan vara positiv eller negativ, och kan också vara större än antalet bitar i datatypen expression_value. När shift_amount är negativ sker skiftet i motsatt riktning. Till exempel är LEFT_SHIFT (expr, -1) samma som RIGHT_SHIFT (expr, 1). När shift_amount är större än antalet bitar i expression_value, blir 0resultatet .

LEFT_SHIFT utför en logisk förskjutning. Efter att bitar har flyttats kommer alla lediga positioner att fyllas av 0, oavsett om det ursprungliga värdet var positivt eller negativt.

Anmärkningar

I den initiala implementeringen kommer Distributed Query-funktionalitet för bitmanipulationsfunktioner inom länkade servrar eller ad hoc-frågor (OPENQUERY) inte att stödjas.

Metoden << för funktionen LEFT_SHIFT stöds för närvarande inte i Microsoft Fabric.

Examples

I följande exempel är heltalsvärdet 12345 vänsterförskjutet med 5 bitar.

SELECT LEFT_SHIFT(12345, 5);

Resultatet är 395040. Om du konverterar 12345 till binärt har 0011 0000 0011 1001du . Om man flyttar detta åt vänster med 5 blir 0110 0000 0111 0010 0000det , vilket är 395040 decimalt.

Följande tabell visar vad som händer under varje skift.

Heltalsvärde Binärt värde Description
12345 0011 0000 0011 1001 Startvärde
24690 0110 0000 0111 0010 Flytta vänster med 1
49380 1100 0000 1110 0100 Flytta vänster med 2
98760 0001 1000 0001 1100 1000 Flytta vänster med 3,
och öppna in i en ny byte
197520 0011 0000 0011 1001 0000 Flytta vänster med 4
395040 0110 0000 0111 0010 0000 Flytta vänster med 5

Se även