bit_shift_right
将数值表达式的二进制表示形式向右移动指定的位数。
此函数执行**算术右移**,在此期间位长度不变,低位被删除,符号位用作高位。 例如,将10101
向右移动一位将导致11010
。
语法
bit_shift_right(value, shift)
参数
value
:要移动的值或数值表达式。支持的数据类型为 TINYINT、SMALLINT、INT、BIGINT 和 LARGEINT。
shift
:要移动的位数。 支持的数据类型是BIGINT。 支持的数据类型是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 |
+------------------------+