LEFT_SHIFT (Transact SQL)
適用対象: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance Microsoft Fabric のSQL 分析エンドポイント Microsoft Fabric のウェアハウス
LEFT_SHIFT は 2 つのパラメーターを受け取り、1 つ目のパラメーターを 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 ではサポートされていません。
例
次の例では、整数値 12345 が 5 ビットだけ左にシフトされます。
SELECT LEFT_SHIFT(12345, 5);
結果は 395040 です。 12345 をバイナリに変換すると、結果は 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 だけ左にシフトします |