RIGHT_SHIFT (Transact SQL)

Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL в хранилище Microsoft Fabric в Microsoft Fabric

Функция RIGHT_SHIFT принимает два параметра и возвращает первый параметр со сдвигом битов вправо на число битов, указанное во втором параметре.

Функция RIGHT_SHIFT также доступна через оператор >>.

Соглашения о синтаксисе Transact-SQL

Синтаксис

RIGHT_SHIFT ( expression_value, shift_amount )
expression_value >> shift_amount

Аргументы

expression_value

Любое целочисленное или двоичное выражение, которое не является большим объектом (LOB).

shift_amount

Количество битов, на которое следует сдвинуть expression_value. Параметр shift_amount должен быть целочисленным типом.

Типы возвращаемых данных

Возвращает тип, совпадающий с типом выражения expression_value.

Параметр shift_amount приведен к bigint. Параметр может быть положительным или отрицательным, а также может превышать число битов в типе данных expression_value. Если параметр shift_amount имеет отрицательное значение, сдвиг выполняется в противоположном направлении. Например, LEFT_SHIFT (expr, -1) — это тоже самое, что и RIGHT_SHIFT (expr, 1). Если параметр shift_amount превышает число битов в expression_value, возвращается результат 0.

RIGHT_SHIFT выполняет логический сдвиг. После сдвига битов любые свободные позиции будут заполнены 0 независимо от того, каким было исходное значение: положительным или отрицательным.

Замечания

В начальной реализации функциональность распределенных запросов для функций поразрядных операций на связанном сервере или в специальных запросах (OPENQUERY) не будет поддерживаться.

Метод >> функции RIGHT_SHIFT в настоящее время не поддерживается в Microsoft Fabric.

Примеры

В следующем примере целочисленное значение 12345 сдвигается вправо на 5 бит.

SELECT RIGHT_SHIFT(12345, 5);

Результатом будет 385. При преобразовании 12345 в двоичный тип получаем результат 0011 0000 0011 1001. Сдвиг этого значения вправо на 5 дает результат 0001 1000 0001, или 385 в десятичном формате.

В следующей таблице показано, что происходит во время каждого сдвига.

Целое значение Двоичное значение Description
12345 0011 0000 0011 1001 Начальное значение
6172 0001 1000 0001 1100 Сдвиг вправо на 1
3086 0000 1100 0000 1110 Сдвиг вправо на 2
1543 0000 0110 0000 0111 Сдвиг вправо на 3
771 0000 0011 0000 0011 Сдвиг вправо на 4
385 0000 0001 1000 0001 Сдвиг вправо на 5

См. также