メインコンテンツまでスキップ
バージョン: Stable-3.3

bit_shift_right

説明

数値式の2進数表現を指定されたビット数だけ右にシフトします。

この関数は算術的右シフトを行い、ビット長は変わらず、低位ビットが削除され、符号ビットが高位ビットとして使用されます。例えば、10101 を1ビット右にシフトすると 11010 になります。

構文

bit_shift_right(value, shift)

パラメータ

value: シフトする値または数値式。サポートされているデータ型は TINYINT、SMALLINT、INT、BIGINT、LARGEINT です。

shift: シフトするビット数。サポートされているデータ型は BIGINT です。

戻り値

value と同じ型の値を返します。

使用上の注意

  • 任意の入力パラメータが NULL の場合、NULL が返されます。
  • shift が 0 未満の場合、0 が返されます。
  • value0 でシフトすると、常に元の value が返されます。
  • 0shift でシフトすると、常に 0 が返されます。
  • value のデータ型が数値で整数でない場合、その値は整数にキャストされます。 を参照してください。
  • value のデータ型が文字列の場合、可能であればその値は整数にキャストされます。例えば、文字列 "2.3" は 2 にキャストされます。値が整数にキャストできない場合、その値は NULL として扱われます。 を参照してください。

この関数を使用して数値をシフトします。

SELECT bit_shift_right(2, 1);
+-----------------------+
| bit_shift_right(2, 1) |
+-----------------------+
| 1 |
+-----------------------+

SELECT bit_shift_right(2.2, 1);
+-------------------------+
| bit_shift_right(2.2, 1) |
+-------------------------+
| 1 |
+-------------------------+

SELECT bit_shift_right("2", 1);
+-------------------------+
| bit_shift_right('2', 1) |
+-------------------------+
| 1 |
+-------------------------+

SELECT bit_shift_right(-2, 1);
+------------------------+
| bit_shift_right(-2, 1) |
+------------------------+
| -1 |
+------------------------+

参照