分享方式:


LEFT_SHIFT (Transact SQL)

適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體 SQL 分析端點

LEFT_SHIFT 接受兩個參數,並傳回按第二個參數中指定位元數向左移位的第一個參數。

LEFT_SHIFT 函數也可以透過 << 運算子存取。

Transact-SQL 語法慣例

語法

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 位

另請參閱