Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in 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 |