メインコンテンツまでスキップ

bit_shift_right

bit_shift_right_logical

説明

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

この関数は、論理右シフトを実行します。論理シフトでは、ビットの長さは変わらず、最下位ビットが削除され、元のビットが正か負かに関わらず高位ビットに0が追加されます。論理シフトは符号なしシフトです。例えば、10101を一つ右にシフトすると、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 でシフトすると、常に 0 が返されます。
  • value0 ビットでシフトすると、元の value が返されます。
  • value のデータ型が数値であっても整数でない場合、その値は整数にキャストされます。詳細は Examples を参照してください。
  • value のデータ型が文字列の場合、可能であればその値は整数にキャストされます。例えば、文字列 "2.3" は 2 にキャストされます。値が整数にキャストできない場合、値は NULL として扱われます。詳細は Examples を参照してください。

数値をシフトするためにこの関数を使用します。

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 |
+-----------------------------------------------+

参考