Sdílet prostřednictvím


RIGHT_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

RIGHT_SHIFT vezme dva parametry a vrátí první parametr posunutý doprava o počet bitů zadaných ve druhém parametru.

Funkce RIGHT_SHIFT je také přístupná přes operátora >> .

Transact-SQL konvence syntaxe

Syntaxe

RIGHT_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

RIGHT_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 RIGHT_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 doprava o 5 bitů.

SELECT RIGHT_SHIFT(12345, 5);

Výsledek je 385. Pokud převedete 12345 do binárního, máte 0011 0000 0011 1001. Posunutím doprava o 5 0001 1000 0001se stane , což je 385 v desetinném rozpisu.

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
6172 0001 1000 0001 1100 Posuňte se doprava o 1
3086 0000 1100 0000 1110 Posuňte se doprava o 2
1543 0000 0110 0000 0111 Posuňte se doprava o 3
771 0000 0011 0000 0011 Posuňte se doprava o 4
385 0000 0001 1000 0001 Posuňte se doprava o 5

Viz také