LEFT_SHIFT (Transact SQL)
适用于: sql Server 2022 (16.x) Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
LEFT_SHIFT 采用两个参数,并返回第一个参数按第二个参数中指定位数左移的位。
还可以通过 <<
运算符访问 LEFT_SHIFT 函数。
语法
LEFT_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
。
LEFT_SHIFT 会执行逻辑转移。 位移动后,无论原始值是正还是负,任何空置位置都将填充 0
。
备注
在初始实现中,链接服务器中的位操作函数的分布式查询功能或即席查询 (OPENQUERY) 不受支持。
Microsoft Fabric 目前不支持 LEFT_SHIFT
函数的 <<
方法。
示例
在以下示例中,整数值 12345 向左移 5 位。
SELECT LEFT_SHIFT(12345, 5);
结果为 395040。 如果将 12345 转换为二进制文件,就会得到 0011 0000 0011 1001
。 将其向左移动 5 变为 0110 0000 0111 0010 0000
,即十进制的 395040
。
下表演示了每次移动发生的情况。
整数值 | 二进制值 | 说明 |
---|---|---|
12345 | 0011 0000 0011 1001 |
起始值 |
24690 | 0110 0000 0111 0010 |
向左移动 1 |
49380 | 1100 0000 1110 0100 |
向左移动 2 |
98760 | 0001 1000 0001 1100 1000 |
向左移动 3, 打开新字节 |
197520 | 0011 0000 0011 1001 0000 |
向左移动 4 |
395040 | 0110 0000 0111 0010 0000 |
向左移动 5 |