対象者: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
LEFT_SHIFT は 2 つのパラメーターを受け取り、2 番目のパラメーターで指定されたビット数だけ左にシフトされた最初のパラメーターを返します。
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) 内のビット操作関数の分散クエリ機能はサポートされていません。
LEFT_SHIFT関数の<< メソッドは、現在 Microsoft Fabric ではサポートされていません。
例
次の例では、整数値 12,345 が 5 ビット左シフトされます。
SELECT LEFT_SHIFT(12345, 5);
結果は 395,040 です。 12,345 をバイナリに変換すると、 0011 0000 0011 1001。 この値を左に 5 ビットシフトすると 0110 0000 0111 0010 0000になり、10 進数で 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 だけ左にシフトします |