適用於:SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric Warehouse
in Microsoft Fabric
SQL database in Microsoft Fabric
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。
下表示範每次移位發生的情況。
| 整數值 | 二進位值 | Description |
|---|---|---|
| 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 位 |