Sdílet prostřednictvím


LEFT_SHIFT (Transact SQL)

Platí na: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

LEFT_SHIFT bere dva parametry a vrací první parametr posunutý doleva o počet bitů zadaný ve druhém parametru.

Funkce LEFT_SHIFT je také přístupná přes operátora << .

Transact-SQL konvence syntaxe

Syntaxe

LEFT_SHIFT ( expression_value, shift_amount )
expression_value << shift_amount

Arguments

expression_value

Jakýkoli celočíselný nebo binární výraz, který není velkým objektem (LOB).

shift_amount

Počet bitů, o které by měl být expression_value posunut. shift_amount musí být celočíselný typ.

Návratové typy

Vrací stejný typ jako expression_value.

Parametr shift_amount se přelije do bigintu. Parametr může být kladný nebo záporný a může být také větší než počet bitů v datovém typu expression_value. Když je shift_amount záporný, posun působí opačným směrem. Například LEFT_SHIFT (expr, -1) je stejná jako RIGHT_SHIFT (expr, 1). Když je shift_amount větší než počet bitů v expression_value, výsledek vrácený bude .0

LEFT_SHIFT provádí logický posun. Po posunutí bitů budou všechna volná místa obsazena , 0bez ohledu na to, zda byla původní hodnota kladná nebo záporná.

Poznámky

V počáteční implementaci nebude podpora funkcionality Distributed Query pro funkce pro úpravu bitů v rámci propojených serverů nebo ad hoc dotazů (OPENQUERY).

Metoda << této LEFT_SHIFT funkce není v Microsoft Fabric v tuto chvíli podporována.

Examples

V následujícím příkladu je celočíselná hodnota 12345 posunuta doleva o 5 bitů.

SELECT LEFT_SHIFT(12345, 5);

Výsledek je 395040. Pokud převedete 12345 do binárního, máte 0011 0000 0011 1001. Posunutím doleva o 5 0110 0000 0111 0010 0000se stává , což je 395040 v desetinném rozvrhu.

Následující tabulka ukazuje, co se děje během každé směny.

Celočíselná hodnota Binární hodnota Description
12345 0011 0000 0011 1001 Počáteční hodnota
24690 0110 0000 0111 0010 Posunout se doleva o 1
49380 1100 0000 1110 0100 Posuňte se doleva o 2
98760 0001 1000 0001 1100 1000 Posuňte se doleva o 3,
a otevře se do nového bajtu
197520 0011 0000 0011 1001 0000 Posuňte se doleva o 4
395040 0110 0000 0111 0010 0000 Posuňte se doleva o 5

Viz také