RIGHT_SHIFT (Transact SQL)
適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體 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
。
下列資料表示範每次移位發生的情況。
整數值 | 二進位值 | Description |
---|---|---|
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 位 |