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 přebírá dva parametry a vrátí první bitový posun parametru doleva o počet bitů zadaných v druhém parametru.

Funkce LEFT_SHIFT je také přístupná prostřednictvím operátoru << .

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). Pokud je shift_amount větší než počet bitů v expression_value, vrátí se 0výsledek .

LEFT_SHIFT provede logický posun. Po posunu bitů se všechny volné pozice vyplní 0, bez ohledu na to, zda byla původní hodnota kladná nebo záporná.

Poznámky

V počáteční implementaci není podporována funkce distribuovaného dotazu pro funkce pro práci s bity v rámci odkazovaného serveru nebo ad hoc dotazů (OPENQUERY).

Metoda << pro LEFT_SHIFT funkci není v současné době v Microsoft Fabric podporovaná.

Examples

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

SELECT LEFT_SHIFT(12345, 5);

Výsledek je 395 040. Pokud převedete hodnotu 12 345 na binární, máte 0011 0000 0011 1001. Posun této hodnoty doleva o 5 bitů se stane 0110 0000 0111 0010 0000, což je 395040 v desítkové soustavě.

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 Posun doleva o 3 a otevření 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