跳到主要内容
版本:Latest-3.2

bit_shift_right

功能

将一个数值或者数值表达式的二进制表示向右移动指定的位数。该函数执行算术右移

算术右移时,依次右移一位,尾部丢失,左侧最高位会补充对应的符号位,bit 长度不变。举例,10101 算术右移一位的结果是 11010

语法

bit_shift_right(value, shift)

参数说明

value: 要进行位移的数值或数值表达式。支持如下数据类型:TINYINT、SMALLINT、INT、BIGINT、LARGEINT。

shift: 要移动的位数,BIGINT 类型。

返回值说明

返回值的数据类型和 value 一致。

使用说明

  • 如果任何一个输入参数为 NULL,则返回 NULL。
  • 如果 shift 小于 0,则返回 0。
  • 对于任意 value 值,如果 shift 等于 0,则返回原本的 value 值。
  • 如果 value 等于 0,则固定返回 0。
  • 如果 value 为非整型的数值,会转换为整数进行运算。参见示例
  • 如果 value 为 STRING 类型,会转换为整数进行运算。如果 STRING 无法转换为整数,则作为 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 |
+------------------------+

相关参考

bit_shift_left

bit_shift_right_logical