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

bit_shift_right_logical

功能

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

逻辑右移时,最低位丢弃,无论原始数值是正数还是负数均在最高位补 0,bit 长度不变。逻辑位移都是无符号位移。举例,10101 逻辑右移一位的结果是 00101.

bit_shift_right() 和 bit_shift_right_logical() 函数对于正数会返回相同结果。

语法

bit_shift_right_logical(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_logical(2, 1);
+-------------------------------+
| bit_shift_right_logical(2, 1) |
+-------------------------------+
| 1 |
+-------------------------------+

SELECT bit_shift_right_logical(2.2, 1);
+---------------------------------+
| bit_shift_right_logical(2.2, 1) |
+---------------------------------+
| 1 |
+---------------------------------+

SELECT bit_shift_right_logical("2", 1);
+---------------------------------+
| bit_shift_right_logical('2', 1) |
+---------------------------------+
| 1 |
+---------------------------------+

SELECT bit_shift_right_logical(cast('-2' AS INTEGER(32)), 1);
+-----------------------------------------------+
| bit_shift_right_logical(CAST('-2' AS INT), 1) |
+-----------------------------------------------+
| 2147483647 |
+-----------------------------------------------+

相关参考