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

bit_shift_right_logical

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

この関数は論理右シフトを行い、ビット長は変わらず、下位ビットが削除され、元のビットが正または負であるかに関係なく、上位ビットに 0 が追加されます。論理シフトは符号なしシフトです。例えば、10101 を 1 ビットシフトすると 00101 になります。

bit_shift_right() と bit_shift_right_logical() は、正の値に対して同じ結果を返します。

構文

bit_shift_right_logical(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_logical(2, 1);
+-------------------------------+
| bit_shift_right_logical(2, 1) |
+-------------------------------+
| 1 |
+-------------------------------+

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

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

SELECT bit_shift_right_logical(cast('-2' AS INTEGER(32)), 1);
+-----------------------------------------------+
| bit_shift_right_logical(CAST('-2' AS INT), 1) |
+-----------------------------------------------+
| 2147483647 |
+-----------------------------------------------+

参考文献