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

Funkce RIGHT_SHIFT je také přístupná prostřednictvím operátoru >> .

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

RIGHT_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 nejsou podporované funkce distribuovaného dotazu pro funkce pro práci s bity v rámci odkazovaného serveru nebo ad hoc dotazů (OPENQUERY).

Metoda >> pro RIGHT_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 posunutá doprava o 5 bitů.

SELECT RIGHT_SHIFT(12345, 5);

Výsledek je 385. Pokud převedete hodnotu 12 345 na binární, máte 0011 0000 0011 1001. Posun této hodnoty doprava o 5 bitů se stane 0001 1000 0001, což je 385 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
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