RIGHT_SHIFT (Transact SQL)
适用于: sql Server 2022 (16.x) Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
RIGHT_SHIFT 获取两个参数,并返回第一个参数按第二个参数中指定位数右移的位。
还可以通过 >>
运算符访问 RIGHT_SHIFT 函数。
语法
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 位 |