RIGHT_SHIFT (Transact SQL)

适用于:SQL Server 2022 (16.x)Azure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

RIGHT_SHIFT 获取两个参数,并返回第一个参数按第二个参数中指定位数右移的位。

还可以通过 >> 运算符访问 RIGHT_SHIFT 函数。

Transact-SQL 语法约定

语法

RIGHT_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

RIGHT_SHIFT 执行逻辑移位。 移位后,无论原始值是正还是负,任何空置位置都将填充 0

备注

在初始实现中,链接服务器中的位操作函数的分布式查询功能或即席查询 (OPENQUERY) 不受支持。

Microsoft Fabric 目前不支持 RIGHT_SHIFT 函数的 >> 方法。

示例

在以下示例中,整数值 12345 向右移 5 位。

SELECT RIGHT_SHIFT(12345, 5);

结果为 385。 如果将 12345 转换为二进制,就会得到 0011 0000 0011 1001。 将其向右移 5 位变为 0001 1000 0001,即十进制的 385

下表演示了每次移位发生的情况。

整数值 二进制值 说明
12345 0011 0000 0011 1001 起始值
6172 0001 1000 0001 1100 向右移 1 位
3086 0000 1100 0000 1110 向右移 2 位
1543 0000 0110 0000 0111 向右移 3 位
771 0000 0011 0000 0011 向右移 4 位
385 0000 0001 1000 0001 向右移 5 位

请参阅