bit_shift_right
Сдвигает двоичное представление числового выражения вправо на указанное количество бит.
Эта функция выполняет арифметический сдвиг вправо, при котором длина в битах не изменяется, младший бит отбрасывается, а знаковый бит используется в качестве старшего бита. Например, сдвиг 10101 вправо на один бит дает 11010.
Синтаксис
bit_shift_right(value, shift)
Параметры
value: значение или числовое выражение для сдвига. Поддерживаемые типы данных: TINYINT, SMALLINT, INT, BIGINT и LARGEINT.
shift: количество бит для сдвига. Поддерживаемый тип данных — BIGINT.
Возвращаемое значение
Возвращает значение того же типа, что и value.
Примечания по использованию
- Если любой входной параметр равен NULL, возвращается NULL.
- Если
shiftменьше 0, возвращается 0. - Сдвиг
valueна0всегда возвращает исходное значениеvalue. - Сдвиг
0на любое значениеshiftвсегда возвращает0. - Если тип данных
valueявляется числовым, но не целым числом, значение будет приведено к целому числу. См. Примеры. - Если тип данных
valueявляется строкой, значение будет приведено к целому числу, если это возможно. Например, строка "2.3" будет приведена к 2. Если значение не может быть приведено к целому числу, оно будет обработано как NULL. См. Примеры.
Примеры
Использование этой функции для сдвига числовых значений.
SELECT bit_shift_right(2, 1);
+-----------------------+
| bit_shift_right(2, 1) |
+-----------------------+
| 1 |
+-----------------------+
SELECT bit_shift_right(2.2, 1);
+-------------------------+
| bit_shift_right(2.2, 1) |
+-------------------------+
| 1 |
+-------------------------+
SELECT bit_shift_right("2", 1);
+-------------------------+
| bit_shift_right('2', 1) |
+-------------------------+
| 1 |
+-------------------------+
SELECT bit_shift_right(-2, 1);
+------------------------+
| bit_shift_right(-2, 1) |
+------------------------+
| -1 |
+------------------------+