LEFT_SHIFT (Transact SQL)
Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL в хранилище Microsoft Fabric в Microsoft Fabric
LEFT_SHIFT принимает два параметра и возвращает первый параметр со сдвигом битов влево на число битов, указанное во втором параметре.
Функция LEFT_SHIFT также доступна через оператор <<
.
Соглашения о синтаксисе Transact-SQL
Синтаксис
LEFT_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
.
LEFT_SHIFT выполняет логический сдвиг. После сдвига битов любые свободные позиции будут заполнены 0
независимо от того, каким было исходное значение: положительным или отрицательным.
Замечания
В начальной реализации функциональность распределенных запросов для функций поразрядных операций на связанном сервере или в специальных запросах (OPENQUERY) не будет поддерживаться.
Метод <<
функции LEFT_SHIFT
в настоящее время не поддерживается в Microsoft Fabric.
Примеры
В следующем примере целочисленное значение 12345 сдвигается влево на 5 бит.
SELECT LEFT_SHIFT(12345, 5);
Результатом будет 395040. При преобразовании 12345 в двоичный тип получаем результат 0011 0000 0011 1001
. Сдвиг этого значения влево на 5 дает результат 0110 0000 0111 0010 0000
, или 395040
в десятичном формате.
В следующей таблице показано, что происходит во время каждого сдвига.
Целое значение | Двоичное значение | Description |
---|---|---|
12345 | 0011 0000 0011 1001 |
Начальное значение |
24690 | 0110 0000 0111 0010 |
Сдвиг влево на 1 |
49380 | 1100 0000 1110 0100 |
Сдвиг влево на 2 |
98760 | 0001 1000 0001 1100 1000 |
Сдвиг влево на 3 и открытие в новом байте |
197520 | 0011 0000 0011 1001 0000 |
Сдвиг влево на 4 |
395040 | 0110 0000 0111 0010 0000 |
Сдвиг влево на 5 |